私のパソコン雑記帖

mod_rewrite リファレンス

カテゴリー: PHP
21Jul2009

Rewrite モジュール

Rewrite モジュール (mod_rewrite) は Apache Web サーバーにおいて、クライントからリクエストのあった URL の内部書き換えや、さまざまな環境変数等に応じたリダイレクトを可能とするモジュール。正規表現を使用した柔軟なマッチングを行うことができ、これを使用することで実際のディレクトリ構成に関係なく自由にサイトURLのパス部分を構成することが出来ます。

.htaccess に記述。

実際に使ってみてトラブルにあったのは、RewriteEngine Off の使いかた。なんとなく RewriteEngine On とセットで使うような感じを受けましたが、これを最後に記述すると、それまでの記述がすべて無効になってしまいます。

もう一点、スラッシュがデリミネータの役割を果たしていること。

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

上記例で、^(.*)$ はスラッシュで区切られた最後の部分を抽出していることになります。

更にもう一点、
通常のリンクを Rewrite する時に使うと有効であるが、フォームからのリンク(action="" で指定)は Rewrite できないようです。フォームからのリンク URL は Rewrite をあてにしないで正確に書くこと。さもないと、思わぬトラップに陥ってしまいます。


.htaccess の例

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_]+)\.php$ http://solar.riok.net/$1.html [R=301,L]
AddType application/x-httpd-php .html
AddType text/css .css

2行目:拡張子phpでのアクセスをhtmlに置き換えて誘導します。
3行目:拡張子phpのファイルを擬似的にhtmlとみなします。
4行目:firefox対応。外部cssを読込ませます。



コメント