ホームページへのアクセスを行うと、サーバーに遷移元のURL情報が送信されます。 このURL情報のことをリファラ(referer)と言います。 htaccessでリファラ(Referer)を参照することが可能なため、遷移元URLを判定しアクセス制御を行うことができます。 たとえば、画像への直接リンクを禁止したり、特定ページからのリンクを拒否するなどの設定が可能です。 ただし、リファラ(Referer)は偽装も可能なため必ず正しい情報とは限りません。
ホームページへのアクセスを行うと、サーバーに遷移元のURL情報が送信されます。 このURL情報のことをリファラ(referer)と言います。 htaccessでリファラ(Referer)を参照することが可能なため、遷移元URLを判定しアクセス制御を行うことができます。 たとえば、画像への直接リンクを禁止したり、特定ページからのリンクを拒否するなどの設定が可能です。 ただし、リファラ(Referer)は偽装も可能なため必ず正しい情報とは限りません。
Summary The mod_rewrite module uses a rule-based rewriting engine, based on a PCRE regular-expression parser, to rewrite requested URLs on the fly. By default, mod_rewrite maps a URL to a filesystem path. However, it can also be used to redirect one URL to another URL, or to invoke an internal proxy fetch. mod_rewrite provides a flexible and powerful way to manipulate URLs using an unlimited numbe
前回は「URL個別に転送設定をする方法」を学びました。 今回は、下記の設定について学習します。 全てのページへのアクセスを別のページへ転送する 特定のディレクトリへのアクセスを別のページへ転送する 設定前の注意事項 「Directory コンテキストや .htaccess で転送設定する場合」と「VirtualHost コンテキストで転送設定する場合」とで、検索条件の先頭に「^/」が必要な場合とそうでない場合とがあります。 どちらのディレクティブに設定しようとしているのかを意識してください。 詳しくは以前の記事「ApacheのRewriteを設定する前に知っておくべきこと」を参考にしてください。 本稿では、VirtualHost ディレクティブで転送設定する場合の記述をしています。 Directory ディレクティブや .htaccess に設定する場合は、「^/」の記述を変更して設定して
<IfModule mod_rewrite.c> RewriteEngine on : ここにリダイレクト処理を記述 </IfModule> パス指定で[R]が無ければリクエスト先を変えるだけ、 [R]がある場合やhttpから指定している場合はリダイレクト、 [R=301]指定している場合は301リダイレクトとなる。 # アドレスバーを書き換えない(forward)リクエストはindex.phpに RewriteRule ^(.*)$ index.php # 302リダイレクト RewriteRule ^(.*)$ index.php [R] RewriteRule ^(.*)$ index.php [R=302] RewriteRule ^(.*)$ https://www.my-domain.com/index.php # 301リダイレクト RewriteRule ^(.*)$ in
ドメインやURLの変更による転送 .htaccessに記述することにより、外部から要求されたリクエストURLを書き換えてリダイレクトすることができます。 サイト移転、ファイル名の変更、ディレクトリ変更、更にはアクセス拒否まで絶大な効果を発揮します。 具体的には、外部から要求されたリクエストURLをApacheのmod_rewrite拡張モジュール(URL書き換えエンジン)を使用し、 正規表現を使って書き換えます。Redirectと異なり、リクエストの URL が実在しなくても転送が可能です。 注意:サーバーの環境 Apache1.2 以降で使用可能。 Apache のhttpd.confで、mod_rewriteモジュールが利用可能になっている必要があります。 .htaccess ファイルにおける Rewrite の記述方法 一般的な書式 RewriteEngine on RewriteB
.htaccess に RewriteRule 書くときは、[L]フラグをつけてもそこで終了しないかもよ?って話。Apache.htaccess .htaccessでRewriteRule書くときに、安易に[L]フラグを使うと思ったように動かないかもしれない。 仕組みを理解して使えば単純な事なんですがね! .htaccess でアクセスを振り分けたい! Apache HTTP サーバーを使っていると、割とよく使う .htaccess ファイル。 特にアクセスをうまく振り分ける為に、 mod_rewrite を使用してる方も結構いらっしゃいますよね。 なんて言ったって、天下の Wordpress 様が使っておられますから。 Wordpress では、アクセスを基本的に index.php に集めて、そこから URL 解析をして特定のページに振り分けてますよね。 # BEGIN WordPre
mod_rewrite へようこそ。これは URL を巧みに操る、スイス製のアーミー・ナイフです! このモジュールは、リクエストされた作業中の URL を書き換えるための、ルールベースの書き換えエンジン(正規表現の解析に基づいた)です。真に柔軟性に富んだ、パワフルな URL 操作を行う、無制限な数のルールと、そのルールに添付される無制限な数の条件をサポートします。URL 操作は様々なテストで、インスタンス変数、環境変数、HTTP ヘッダ、タイムスタンプ、様々なフォーマットでルックアップする外部データベースが本当の granular URL 一致するように使われることでさえ、変わってきます。 このモジュールはサーバ毎のコンテクスト (httpd.conf) と ディレクトリ毎のコンテクスト (.htaccess) にある、完全な URL (パス情報の部分を含む)を操作して、結果としてクエリー
Rewrite機能の概要 Rewrite機能とは、アクセスのあったURLを、正規表現で書き換えてから処理する機能です。URLを正規表現で書き換えられるので、次のようなことは簡単に実現できます。 /~user_name といったユーザ用のURLを /u/user_name に書き換える場合 RewriteEngine on RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R] この機能を利用する際は、mod_rewriteモジュールが使える環境になっているかどうか確認しましょう。設定ファイルの中に、次のような行があれば問題ありません。 LoadModule rewrite_module modules/mod_rewrite.so Rewrite指示子 Rewriteの機能を制御する指定子を紹介します。 RewriteEngine RewriteEngine O
WordPressでは、パーマリンク設定を行うと.htaccessが自動生成されます。 この時.htaccessに新たに別のことを書き込み、保存したとします。 しかし、何度やってもその記述が消えてしまします。.htaccessが勝手に上書きされてるのかと思い、いろいろ調べましたが原因不明でした。 しかし、原因は新たな記述を行った場所にあるようでした。 あらかじめ仕様を知っておけ、という話なんでしょうけれども、しばらくハマってしまいました。 自動生成された.htaccess内の記述 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /business/wp/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f Rewr
WordPressに対してパーマネントリンクを設定すると、 自動的にWordPressのインストールディレクトリに対して、 .htaccessファイルが生成されるのはご存知のことと思います。 ではこの.htaccessファイルはどのような役割を担っているかをチェックしたことはありますか? ここではパーマネントリンクを設定して作成される .htaccessファイルによる挙動を確認してみます。 自動で作成される.htaccessファイル パーマネントリンクを設定して作成される.htaccessファイルは、 以下のようになっています。 ここではWordPressを/wp/にインストールしたものを例示しています。 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wp/ RewriteRule ^ind
アクセス権は左から3文字ずつ、 ユーザー(所有者)のアクセス権 グループのアクセス権 その他ユーザーのアクセス権 を表しており、「rwx rw- r–」の場合、 ユーザー(所有者)に対しては、読み取り可能、書き込み可能、実行可能 グループに対しては、読み取り可能、書き込み可能 その他ユーザーに対しては、読み取り可能 という意味になります。 最後に数値で表す場合には、「読み取り=4」、「書き込み=2」、「実行=1」として所有者、グループ、その他ユーザーごとに足した数値で表します。 下記の場合、「764」というのがアクセス権を数値で表したものとなります。 ———————————– 所有者 グループ その他ユーザー ———————————– rwx rw- r– 421 42 4 ↓ ↓ ↓ 7 6 4 ———————————– 例えば、一般ユーザはシステムに関するファイルへの書き込みは出来ない
OptionsでIndexesが指定されたディレクトリは(index.html等がない場合)ファイルの一覧が表示されるようになりますが、ファイル名の文字コードがEUC-JPやSHIFT-JISの場合は文字化けすることが多いようです。 対策としてhttpd.confをAddDefaultCharset Off IndexOptions FancyIndexing FoldersFirst SuppressHTMLPreamble HeaderName /header.html ReadmeName /footer.htmlのように編集し、header.htmlのmetaタグで文字コードを指定するというようなページがいくつか見つかります。しかし、mod_autoindexの英語版ドキュメント(現時点で日本語版には記述無しtt)によるとCharset=character-set (Apache
概要 ディレクトリのインデックスは二つの情報源のうちの 一つから生成できます: 普通は index.html と呼ばれる ユーザによって書かれたファイル。 DirectoryIndex ディレクティブでこのファイル名を設定します。 これは mod_dir で制御されます。 もしくは、サーバによって生成された一覧。 その他のディレクティブでこの一覧の書式を制御します。 AddIcon, AddIconByEncoding と AddIconByType を使うことで、様々なファイルタイプに対してアイコン一覧を セットします。つまり、リストされたファイル毎に、 ファイルにマッチした一番最初のアイコンが表示されます。 これらは mod_autoindex で制御されます。 望むならば、自動インデックス生成を完全に除去 (あるいは置換) できるように、この二つの機能は分離されています。 自動インデ
ディレクトリインデックスが文字化けする場合は、IndexOptions Charset=UTF-8などいじってみよう スポンサードリンク Tweet Apache使えるようになったらやってみたいのがディレクトリインデックスいじりですよね。日本語表示できるようにしたりとか。 でも、Firefoxでは、なぜか文字化け。どうも、Firefoxは、ディレクトリインデックスを生成するHTMLの中で、meta要素で指定するcharsetは無視しちゃい、レスポンスヘッダのほうに書かれているエンコーディング(ISO-8859-1)で表示されるようなんです。 よって、こうなる。 ▲バケテーラ これを、レスポンスヘッダでしっかり指定(UTF-8)して、文字化けしない方法です。後で述べる方法を使うと、ちゃんと表示されます。 ▲化けてない とはいっても、大抵事が起こってからネットで検索するんですが、 無印家 :
.htaccess とは? .htaccess ファイル(分散設定ファイル)は、サーバの挙動を決定する設定ファイルのひとつで、ウェブサーバとして「Apache」が使用されていて、サーバ管理者が「.htaccess」ファイルの設置を許可していれば使用可能です。 通常 Apache は、httpd.conf というテキストファイルにディレクティブ(命令、コマンドのこと)と呼ばれる専用の命令を記述することで設定しますが、httpd.conf はサーバ管理者しか編集できません。それに対して、.htaccess ファイルは各ユーザが、各ディレクトリ単位で設定することができます。 .htaccess ファイルを設置すると、アクセス制限やユーザー認証、リダイレクト(自動転送)、404エラーページのカスタマイズなどを設定することができます。 .htaccess ファイルは単なるテキストファイルですが、以下
「.htaccess」「.htpasswd」ファイルはFTPソフトでアップロードすれば、すぐに機能が有効となります。もし、アップロードを間違えた場合、アップロードした瞬間から、サーバーエラー(Internal Server Error)などが発生することがありますので、ご注意ください。 htaccess動かに場合やエラーとなる場合は以下もご確認ください。 htaccessが動かない時
いつものように、詰まった作業に関しての個人的な備忘録。今回は、ブラウザで SVG がうまく表示されなかった際には、サーバーの設定を確認してみましょう、というお話。 詰まった箇所 このブログのフッターにある各サービスへのリンクのアイコンを SVG 形式にしてみようと思い、Retina対応にSVGを使う方法とリンクを張る時の注意点 | Dress Cordingというページを参考にローカルで作業。問題なく表示されたので、本番環境(ロリポップ!)にアップしたところ、何故か何も表示されない。フォールバックの PNG ファイルもダメ。ローカルで OK で、サーバー上で NG ということは、サーバー関連の問題かなあと検討をつける。 過程 とりあえず、今利用しているロリポップ!で何かしらの作業が必要かなと思ってググったところ、こんなツイートを発見。 ロリポップでSVGを表示するには、MIMEタイプの設定
その便利さゆえに、近ごろ爆発的に普及しつつある「SVG画像」または「SVGZ画像」ですが、サーバー環境によってはブラウザーでうまく表示されないケースがあります。 今日紹介するのは、この「SVG画像」または「SVGZ画像」が表示されない時の解決策です。 ちなみにSVGとは「Scalable Vector Graphics」の略で、XML言語をベースに書かれた画像フォーマットのことです。 これまで使われてきた「JPEG」「GIF」「PNG」のような、所謂「ビットマップ」タイプの画像と異なり、画像データを座標や図形で扱う「ベクター」タイプの画像なので、拡大・縮小しても描画が荒くならないため、Retinaディスプレイ対応サイトなどでは頻繁に利用されています。 ファイルの拡張子は「.svg」または「.svgz」となり、「.svg」をgzip圧縮してファイル容量を小さくしたものが「.svgz」になりま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く