メンテナンス表示の正しい方法をメモしました。
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/(.*)$