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 にリダイレクトされるようになります。
これは便利だ・・・
もっと早く知りたかったなぁ・・・

コメント

タイトルとURLをコピーしました