ファイルの有無でメンテページへ切り替える為のmod_rewrite設定

あらかじめこの設定をしておけば、サイトのメンテナンス時、
毎回メンテページへのリダイレクトを設定する手間が省けます。


そこの『え?1回リダイレクトの設定すれば、後は毎回コメントを解除するだけなんだけど』とか言ってる人!
ごもっとも。

まー、色々方法がある中から、自分の好きなものを選べる方がいいと思うので。

設定

以下が設定例になります。

// .htaccess
ErrorDocument 503 /mainte.html
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond /var/www/html/mainte_trigger.txt -f
    RewriteCond %{REQUEST_URI} !^/mainte.html [NC]
    RewriteRule .* - [R=503,L]
</IfModule>

ドキュメントルートは『/var/www/html』になっていて、メンテページを『mainte.html』として配置しています。

上記の場合

  • 『/var/www/html/mainte_trigger.txt』が存在する場合

にHTTPステータス503でメンテページを表示します。

切り替え方法

後はSCPなりコマンドラインなりで『/var/www/html/mainte_trigger.txt』を作成すればメンテページ表示、削除すればメンテ解除になります。

補足

mainte_trigger.txtのサイズまで見る場合、『-f』オプションではなく『-s』オプションを使用します。

  • -f : 『ファイルが存在する場合にtrue』
  • -s : 『ファイルが存在し、サイズが0でなければtrue』