mod_rewriteを使う

動的URLを静的URLに見せたいなぁとか思ってmod_rewriteを使ったのでメモ。
散々エラー出しまくって、結局サーバーの設定で蹴られてたというオチ。

mod_rewriteが使えるか確認

サーバーが直接扱えるならhttpd.confを開いてrewrite_moduleを有効にする。
コメントを外す→LoadModule rewrite_module modules/mod_rewrite.so
ユーザーレベルなら以下のスクリプトで確認する。

<?php
print_r(apache_get_modules());
?>

ここでmod_rewriteが出れば稼動している。

文字コードの確認

.htaccessunicodeはダメ、asciiで保存する。
ただしサーバー環境によりけり。

改行コードの確認

ファイル名がhtaccessだとバイナリとして扱われたりするので、htaccess.txtにするか、テキストとしてアップロードする。

該当ディレクトリで使えるか確認

httpd.confを確認する。
特定サブディレクトリでしか使えないとかイレギュラーな設定もある。

AllowOverrideのパラメータ確認

AllowOverride FileInfo Options
にする。

文法の確認

正規表現が間違ってないかとか確認する。

サンプル

サンプルというか、ほとんどそのまま。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /hoge.cgi?$1 [L]