とりあえず、サイトメンテナンスを行う際htaccessで出来る方法を探したら、
こちらのやりたい事と全く一致しているサイトを見つけた。
http://www.niyango.com/mt/2009/05/post-28.html
1.やりたい事
①どのページからアクセスされてもメンテナンス画面を出す。
②メンテナンス画面を1つ作ってそこへリダイレクト。
③IPによるアクセス制限
2.mod_rewriteの設定
(mod_rewriteだけでは503のエラーを出せないのでphpで実現するらしい)
.htaccessに
RewriteEngine on
RewriteRule ^503/ - [L]
RewriteRule ^.*$ 503/503.php
と書くと、設定されているディレクトリ以下が503ディレクトリ以外全部 /503/503.phpに飛ぶ。
3.特定IPだけは503に飛ばさない
.htaccessに
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^000\.000\.000\.1$ ← ココにIP設定
RewriteCond %{REQUEST_FILENAME} !503.php
RewriteRule ^.*$ /503/503.php [L]
4./503/503.php作成
header ('HTTP/1.0 503 Service Temporarily Unavailable');
include(dirname(__FILE__) . '/maintenance.html');
?>
5.飛び先の/503/maintenance.html作成
6.maintenance.htmlに画像やCSSのリンクがある場合
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(css|gif|jp?g|png|js)$ ← ココを追加
RewriteCond %{REMOTE_ADDR} !^000\.000\.000\.1$
RewriteCond %{REQUEST_FILENAME} !503.php
RewriteRule ^.*$ /503/503.php [L]