URLリライトについて

URLリライトとは?

Rewrite機能とは、正規表現で指定されたURLのパターンをウェブサーバー内部で別なURLに変換する機能のことです。

一般的には、ウェブサーバー「Apache」のRewrite機能を指します。

Rewrite機能に似たものとしてAlias 機能やRedirect機能がありますが、それらよりもはるかに柔軟な機能を有しています。

 

Rewrite機能が使えるバージョン

Rewrite機能は、Apache1.2で採用されました。

 

Rewriteの設定はどこに記述するか?

Apacheの管理者権限がある場合は、「httpd.conf」に記述することが出来ます。

管理者権限を持たない場合は、各ディレクトリの「.htaccess」に記述することが可能となっていますが、それを許可するかどうかは「httpd.conf」の設定に依存します。

現在多くのレンタルサーバーで「.htaccess」が使用できるようになっていますが、一部のサーバーでは使用できないので注意してください。「.htaccess」が使えるかどうかは、下記の方法で確かめることができます。

.htaccessが使えるかどうかを確認する方法

「htaccess.txt」という名前のテキストファイルを作成する。(Windowsではピリオド「.」から始まるファイル名を付けることができないため、便宜上左記のファイル名を付ける。)

以下の3行をコピーして、上記テキストファイルに貼り付けて保存する

AuthType Basic
AuthName Basic
Require valid-user

サーバーに上記テキストファイルを「.htaccess」にリネームしてアップロードする。

サイトにアクセスしてみる。

ユーザー名とパスワードの入力を要求する画面が表示されたら「.htaccess」が使えることを意味します。

URLリライト機能が使えるかどうかを確認する方法

「.htaccess」が使えるとしても、URLリライト機能が使えるかどうかは「httpd.conf」の設定に依存します。

URLリライト機能を使うにはApacheの設定でRewriteモジュールを使用できる設定になっている必要があります、

次の手順でRewriteモジュールが使用できるかどうかを確かめることができます。

下記の3行を「.htaccess」に記述します

<IfModule mod_rewrite.c>
    ErrorDocument 404 http://www.google.co.jp/
</IfModule>

サイト内の実在しないURLにアクセスします。

GoogleのサイトへリダイレクトされればRewriteモジュールが使えるということになります。

Rewriteログについて

Rewrite機能は複雑なので、内部でどのように処理されたかをログに出力する機能を有しています。

しかし、「.htaccess」ではログ機能を使うことはできません。

ログ出力機能を使うには、管理者として「httpd.conf」に記述する必要があります。

RewriteLogとRewriteLogLevel

RewriteLog-ログ出力先

RewriteLogLevel-ログ出力レベル(0-9,0:非出力,9:Max) ※レベル毎の詳細な説明は見当たりませんでした。

なお、Apache2.4 からはRewriteLog という独立したログが廃止され、coreモジュールのLoglevelディレクティブを使って指定する方法に変更されました。他のログと一緒にerror_logに出力されます。出力レベルはtrace1~trace8までで、数値が大きくなるほど出力範囲が広くなります。

記述例:LogLevel info rewrite:trace3

 

 

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる