メンテナンスには302より503だと思います、ぐ○なびさん。

先週、あるキーワードで検索していると奇妙なSERPに遭遇しました。

システムメンテナンスの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に表示され続けることも十分にありえます。

大事なことを簡潔にまとめます。

サイトのメンテナンスをする場合は、以下を指針とするとよいでしょう。

  1. 別のURLでサービスを継続するなら、302リダイレクトで一時移動する
  2. サービスを完全停止するなら、503エラーを返す

なお、503エラーの設定は、このブログの記事ならこちらを参照してください。
『HTTP503エラーの設定方法』

もっと詳しくて丁寧な設定方法は、僕が『海外&国内SEOウォッチ』の連載でお世話になっているWeb担当者Forumの安田編集長が書いた『メンテナンス中画面を出す正しい作法と.htaccessの書き方』をご覧ください。

というより、1,000はてブ越えの記事ですから必ず読んでブックマークしておきましょう。