IT Rescue IT関連Tips情報

メンテナンスページをmod_rewriteで出す

2009年2月26日サーバ管理

サイトのメンテナンス中にメンテナンスページを表示する。でも、特定のIPアドレスからのアクセスはそのまま通したい場合、mod_rewriteを使ってこんな風に設定します。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} 192.168.1.140 [OR]
RewriteCond %{REMOTE_ADDR} 192.168.1.141
RewriteRule .* - [L]

RewriteRule /mainte.html$ - [L]
RewriteRule .* /mainte.html [R=302]

このようなmainte.confを用意して httpd.conf からIncludeします。VirtualHostを使っているなら当該VirtualHostディレクティブ内でIncludeします。

2,3行目の RewriteCond でメンテナンス画面を出さずにそのままアクセスさせたいIPアドレスを並べます。これらのRewriteCondにマッチしたIPアドレスの場合は、4行目のRewriteRuleが適用されます。つまり、すべて素通りします。

2,3行目のRewriteCondにマッチしない場合、6行目のRewriteRuleが適用されます。6行目のRewriteRuleは /mainte.html へのアクセスを 素通しさせます。/mainte.html 以外のアクセスの場合、7行目の RewriteRule が適用され /mainte.html へリダイレクトされます。

注意点は mainte.html で画像,CSSやJavaScript等を使う場合には、それらのファイルへのアクセスも6行目の設定と同様に素通しさせる設定が必要です。あるいはメンテナンス画面用のコンテンツを一つのディレクトリにまとめて、そのディレクトリへのアクセスは素通しするように設定します。このあたりはRewriteCondを駆使すれば様々な方法がありますので研究してみてください。

わたしは、mainte.htmlをテキストのみの簡単なHTMLファイルで済ましてしまう場合もあります。


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。