とりあえず、サイトメンテナンスを行う際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]