今回は、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 ^.*$ - [R=503,L]
しっかりバージョン
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 ^.*$ - [R=503,L]
Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT
* /maintenance.htmlの部分には、メンテ中であることを示すHTMLのパスを指定します。
* 192.168.0.4の部分には、管理者のIPアドレスを書きます。管理者IPアドレスがさらにある場合は行をコピーして増やせばOKですし、必要なければ行を削除してしまいます。
* Sun, 14 Jun 2009 06:00:00 GMTの部分には、メンテ終了予定時刻をGMTで指定します(メンテ終了までの秒数でも出せますが、終了時刻をRFC1123形式で示すほうが楽でしょう)。ただし、ここに指定する値は人間のユーザーには基本的に示されませんし、あくまでも参考データです。
これで、どのURLにアクセスしても、ブラウザに表示されるURLはそのままで、メンテ中を示すページが表示され、しかも、HTTPレスポンスコード503(過負荷/メンテで一時的に利用不可)が返るので、検索エンジンに対しても一時的なメンテだと理解され、メンテ画面がインデックスされることはありません。
次のページどういった設定だとまずいのか
続きは会員限定です。無料の読者会員に登録すると続きをお読みいただけます。
- 会員登録 (無料)
- ログインはこちら
関連記事
2009.02.10
2015.01.26
安田 英久
株式会社インプレスビジネスメディア Web担当者Forum編集長
企業のウェブサイト活用やウェブマーケティングに関するメディア「Web担当者Forum」(http://web-tan.forum.impressrd.jp/)を運営しています。