mod_rewriteの使い方
Rev.2を表示中。最新版はこちら。
mod_rewriteを使用することで、アクセスのあったURLを自在に書き変えることができる。URLのクエリ文字列で動的にページを生成するような場合(http://xxxx/index.php?id=xx)でも静的ページに見せかけることができる。mod_rewriteを使うには
mod_rewriteモジュールをロードする必要があるのでhttpd.confに以下を追加する。(Apache2.x系)LoadModule rewrite_module modules/mod_rewrite.so次にRewriteEngineの動作を有効にする。
RewriteEngine on以上でURLの書き変えが有効になる。
後は書き変えルールを定義すればよい。
ここでは、以下の形式のURLを
http://www.xxxx.com/april/index.php?pg=pagename
("april"と"pagename"が可変とする)
でアクセスするページを
のような形式でもアクセスできるようにする(クエリ文字列がURLに組みこまれている)。
http://www.xxxx.com/april/pg/pagename/
この場合、書き変えルールとして、以下の行を追加する。2カラム目の
RewriteRule ^/(.+)/pg/(.*)$ /$1/index.php?pg=$2 [L][L]はこのルールにマッチしたら書き変えを終了する。
複数のRewriteRuleが定義されていた場合、Lフラグがないとマッチして書き変えた後次のルールに進む。
httpd.confの例
<略>
LoadModule rewrite_module modules/mod_rewrite.so
<略>
<VirtualHost *:80>
ServerAdmin tomita@localhost.localdomain
DocumentRoot /usr/local/apache2/htdocs
ServerName localhost.localdomain
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
RewriteEngine on
RewriteRule ^/(.+)/pg/(.*)$ /$1/index.php?pg=$2 [L]
</VirtualHost>