サイトのダウン タイムへの対処の仕方

2011年2月10日木曜日

何らかの理由で Googlebot がクロールできないと、そのサイトは Google の検索結果上でマイナスの影響を受けるのでしょうか? 時々、このような質問が寄せられます。サイトを一時的に休止してしまうダウン タイムは、サイトのメンテナンスや、法的・文化的な理由などから避けられない場合があります。しかし、ダウン タイムであることが明示されていないと、サイトの評判が下がってしまうこともありえます。では、このような場合どのように対処したら良いのでしょうか。Google はクロールやインデックス、ランキングについては、いかなる保証もできませんが、一般的に、サイトのダウン タイムが予定されている場合には、それが検索結果上でのサイトの評価に影響を及ぼさないようにする方法があります。

例えば、ページのリクエストに対して、HTTP ステータス コード 404 (Not Found) を返したり、エラー ページを表示しているのに 200 (OK) を返したりする方法は、ダウン タイムへの対処法としてお勧めできません。それよりも、HTTP ステータス コードとして 503 (Service Unavailable) を返すように設定した方が、検索エンジンのクローラに対してダウン タイムが一時的であることを伝えることができます。さらに、この方法には、サイトを訪れた人やボットに向けて、サイトが復旧するまでの時間を示せるという 利点もあります。 具体的には、 Retry-After ヘッダー (英語)を利用することで、あらかじめ分かっているダウン タイムの時間やサイトの復旧日時について指定することができます。ちなみに、Googlebot は、この情報を参考にして、再クロールのタイミングを決める場合があります。

503 ステータス コードを返すという設定は、他にもさまざまな場面で活用できます。例えば、ダウン タイムに加えて、サーバー エラーや通信容量オーバー、さらには "Under Construction" のような一時的なページを表示する必要がある場合に、応答コードとして 200 (OK) を返しているサイトが多数見られますが、ここでも 503 ステータス コードが使えます。また、ハードウェアのメンテナンスなどが理由でサーバーにダウン タイムが発生することがあらかじめ分かっている場合には、503 ステータス コードを返すためのサーバーを別途、用意しておくと良いでしょう。ただし、503 ステータス コードはあくまで一時的な応答コードであることにご注意ください。というのも、永続的に 503 を返す状態が続いていると、サーバーが復旧することはないと見なされて、該当 URL が Google のインデックスから削除される場合があるからです。

    header('HTTP/1.1 503 Service Temporarily Unavailable');
    header('Retry-After: Sat, 8 Oct 2011 18:27:00 GMT');
    // PHP を使って 503  (Service Unavailable) を返すように設定すると、ヘッダーの情報は上記のようになります。
   

ユーザーにとって 有益な 404 ページを作成する 場合と同様に、503 メッセージをカスタマイズして、ユーザーに状況を説明し、サイトがいつ復旧するか知らせるようにすると良いでしょう。HTTP ステータス コードの詳細については、 RFC 2616 (英語)をご参照ください。