今回は、Webサイトやサービスをメンテナンス中にする場合に、どのURLにアクセスしても「メンテナンス中です」の画面を出す正しいやり方を、人間にも検索エンジンにも適切にするやり方を解説します。

この週末の土曜深夜〜日曜早朝にかけて、データセンターの設備メンテナンスのため、Web担を含むインプレスグループのほとんどのWebサイトが、どのURLにアクセスしても「メンテ中です」という表示になっていました。

なのですが、その実装がちょっと気になったので、「正しいメンテナンス画面の出し方」を説明してみます。




メンテ中画面を出す正しいApacheの設定

結論としては、正しいやり方は次の2ステップになります。


1.メンテ中画面を出すWebサーバーに/maintenance.htmlというファイルを作り、人間に対して表示するメッセージをHTMLで書く。
2. .htaccess(またはhttpd.conf)で、次のどちらかのように設定する。



最低限バージョン

ErrorDocument 503 /maintenance.html


RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^.*$ -



しっかりバージョン

ErrorDocument 503 /maintenance.html


RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=192.168.0.4
RewriteCond %{REMOTE_ADDR} !=192.168.0.5
RewriteRule ^.*$ -



Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT


* /maintenance.htmlの部分には、メンテ中であることを示すHTMLのパスを指定します。
* 192.168.0.4の部分には、管理者のIPアドレスを書きます。管理者IPアドレスがさらにある場合は行をコピーして増やせばOKですし、必要なければ行を削除してしまいます。

続きはこちら