サーバーメンテナンスのときに「只今メンテナンス中です」というメッセージを表示したい。その時に、あらゆるリクエスト(ブックマークされたなど)に対してもメッセージを表示したい。ただし、管理用エリアにはアクセスを許可したい。そんな場合の.htaccessはどう設定したらよいか。
スポンサードリンク
サンプル
もっと良い方法があるかもしれないけれど、とりあえず動作している。
<VirtualHost *:80> # 2007-12-16 for Maintenance by CASEY # 2008-01-17 for snort by CASEY # 2008-09-06 bug fix by CASEY # All Access go to index.html (Print Now Maintenance) RewriteEngine on RewriteRule ^/snort/(.*)$ - [L] RewriteCond %{REQUEST_URI} !^/index.html$ RewriteRule ^/.*$ /index.html [R] </VirtualHost>
この例では次のように動作する
- http://foo.jp
-> http://foo.jp/index.html - http://foo.jp/index.html
-> http://foo.jp/index.html - http://foo.jp/snort/
-> http://foo.jp/snort/ - http://foo.jp/sonzaisinai
-> http://foo.jp/index.html
※メンテナンスメッセージファイルは /index.html にある
間違いや他の方法があったら教えてください。
(追記)その他の実現方法
方法1
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^pc.casey.jp(.*) RewriteRule ^(.*)?$ http://www.casey.jp/errors/maintenance.html [R=302,L] </IfModule>
方法2
Redirect temp / http://www.casey.jp/errors/maintenance.html
参考文献
- [Apache-Users 7094] Re: mod_rewrite にて / への全てのアクセスを /bv/ へリダイレクトさせる方法 [ 結果報告 ] :
http://mm.apache.jp/pipermail/apache-users/2008-July/007133.html - RewriteCond – RewriteRuleの条件を設定 :
http://www.ksknet.net/apache/rewritecond_rew.html - .htaccessでリダイレクト機能を利用する方法 :
.htaccessでリダイレクト機能を利用する方法 - mod_alias – Apache HTTP サーバ :
mod_alias - Apache HTTP サーバ
oldId.20080905174331815