先週、あるキーワードで検索していると奇妙なSERPに遭遇しました。
かの有名な「ぐるなび」系列サイト、お取り寄せショッピングの「ぐるなび食市場」が1位表示されたSERPです。
下は、通常時のSERPです。
メンテナンス中のページがキャッシュされてしまっています。
実際にアクセスすると、このようなページが表示されました。
たしかにメンテナンスのお知らせページです。
SERPのURLは、「http://shop.gnavi.co.jp/Mallgn/special/wakeari_sale/」ですが、アクセス先のURLは、「http://shop.gnavi.co.jp/syserror.html」となっていました。
分かる人には分かりますが、あまりよいメンテナンスページの出し方ではないですね。
訪問ユーザーに配慮したメンテナンス中ページの表示はまったく問題ありませんが、検索エンジンへの配慮がなされていません。
メンテナンスページが、インデックスされてしまっています。
本来のページからメンテナンスのお知らせページへ、302リダイレクトをかけていました。
メンテナンスでアクセスできない期間中に、別ページへ302リダイレクトすること自体は決して間違っていません。
一時的でまた元に戻すからです。
しかし、302リダイレクトは一時的とはいえ、別のURL(ページ、ドメイン)への移動です。
別のURLに移して、サービスを継続するのであれば302リダイレクトは、しごく適切な処置です。
ですが今回のケースは、移動ではありません。
サービス(ページへのアクセス)の停止です。
この場合は、サービスの停止を示す503エラーを返すべきです。
302リダイレクトを使ったために、ロボットがアクセスした際にインデックスしてしまい、キャッシュを置き換えてしまいました。
結果として、SERPの表示も入れ替わったのです。
302リダイレクトを用いたので、SERPのURLは転送先ではなく転送元のURLになっています(301リダイレクトの場合は、SERPのURLも転送先に置き換わります。詳しくは、『301リダイレクトと302リダイレクトの違い』を参照)
503エラーを返すように設定しておけば、検索エンジンはサービス停止中であることを認識し、エラーページをインデックスすることはありません。
※ただ単にメンテナンス通知用のページをアップロードして、ステータスコードの200を返すのは論外です。w
もっとも、ぐるなびのような巨大なサイトなのでクローラの訪問頻度もかなりのはずで、メンテナンスが終わった数時間後には、再インデックスされて正常なSERPに戻っていました。
でも、それほど頻繁にクローラが来ないサイトでタイミングが悪ければ、数日はメンテナンスページがSERPに表示され続けることも十分にありえます。
大事なことを簡潔にまとめます。
サイトのメンテナンスをする場合は、以下を指針とするとよいでしょう。
- 別のURLでサービスを継続するなら、302リダイレクトで一時移動する
- サービスを完全停止するなら、503エラーを返す
なお、503エラーの設定は、このブログの記事ならこちらを参照してください。
『HTTP503エラーの設定方法』
もっと詳しくて丁寧な設定方法は、僕が『海外&国内SEOウォッチ』の連載でお世話になっているWeb担当者Forumの安田編集長が書いた『メンテナンス中画面を出す正しい作法と.htaccessの書き方』をご覧ください。
というより、1,000はてブ越えの記事ですから必ず読んでブックマークしておきましょう。