mod_rewrite でパターンにマッチしない場合にリダイレクトする
メンテナンスかなんかで HP へのアクセスを全て特定のファイル(メンテナンスの通知用のページとか)にリダイレクトしたい場合、Apache の場合には mod_rewrite モジュールを使うと便利です。
.htaccess 等で
RewriteRule .* test.html
としておけば .htaccess が置かれているディレクトリ以下へのアクセスは全て test.html に転送(上書き?)されます。
ところが、ルート直下の admin と言うフォルダに管理ページがあったりした場合、メンテナンス中でもアクセスしたかったりします。
「admin フォルダ以外をリダイレクトする」みたいな設定は無いのかな・・・と、ずーと思ってました。
が、マニュアルに載ってました・・・普通に。
気づかなかった今まで・・・
RewriteRule Directive(mod_rewrite - Apache HTTP Server)
! を着けるとパターンにマッチしない場合だけリダイレクトしてくれるようです。
前述の例であれば、ルートディレクトリに .htaccess を置き
RewriteEngine On
RewriteRule !^admin\/ test.html
とすることで /admin 以下のファイルを除く全てのアクセスが test.html にリダイレクトされるようになります。
これは便利だ・・・
もっと早く知りたかったなぁ・・・
コメント