メンテナンス表示の正しい方法。

メンテナンス表示の正しい方法をメモしました

 

1./maintenance.htmlを置く。

2.htaccess, httd.confどちらかに下記を記載。

ErrorDocument 503 /maintenance.html

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.html
  RewriteCond %{REMOTE_ADDR} !=192.168.0.4
  RewriteCond %{REMOTE_ADDR} !=192.168.0.5
  RewriteRule ^.*$ – [R=503,L]
</IfModule>

<IfModule mod_headers.c>
  Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT"
</IfModule>

 

上記の利点。

・URLが変わらずにHTTPレスポンスコード503が返るので、検索エンジンがメンテ画面がインデックスすることがない。
・RewriteCond %{REMOTE_ADDR}に管理者IPを指定すれば、管理者はメンテ中でも作業が可能。


逆に、悪いメンテ表示とは、

・全URLへのアクセスにRewriteでメンテ中画面を表示 → ステータスコードが200のままなので、検索エンジンがメンテ状態をインデックスしてしまう。
・全URLへのアクセスを302リダイレクトでメンテ中画面のURLに転送 → 検索エンジンがリダイレクト先をインデックスしてしまう(可能性がある)。


ダメな理由は検索エンジン関連ですが、公開後の余計なトラブルを防ぐためにも、メンテ表示は適切に行いましょう。

参考:http://web-tan.forum.impressrd.jp/e/2009/06/16/5880

 

追記:
RewriteCond で、特定のディレクトリを除外する場合は以下の様に。
RewriteCond %{REQUEST_URI} !^/direcotry_name/(.*)$