メンテナンスページをmod_rewriteで出す
 2009.02.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ファイルで済ましてしまう場合もあります。
カテゴリー:サーバ管理