クロールエラーはグーグルからの危険信号だからクロールエラーを発見したら対策をしよう

この記事は約11分で読めます。

Crawlerrorsグーグルウェブマスターツールをチェックするとメッセージが出ていることがある。もしもクロールエラーがでていたらグーグルからの危険信号である。クロールエラーを発見したら対策をしよう。
クロールエラーとは、グーグルがWEBサイトを巡回する検索ロボット(グーグルボット/クローラー)がうまくアクセスできなかったときに発するメッセージである。クロール結果はHTTPステータスコードという3桁の数字で表されている。

クロールエラーはグーグルからの危険信号

クロールエラーを発見したら対策をしよう

クロールがうまくいくとHTTPステータスコードの「200 (成功)」が返ってくるが、うまくいかないときは「404エラー(ページが見つかりません) 」などのエラーメッセージが返ってくる。クロールエラーにはいろんな種類があるので、HTTPステータスコードの数字をみて状況を確認してから対策を検討する。

クロールエラーについては「Google ウェブマスター向け公式ブログ」でもたびたび記事が紹介されている。2010年8月には「クロールエラーの急増をお知らせする、ウェブマスターツールの新機能について」という記事が紹介されたり、2012年1月には「ホスティング プロバイダとウェブマスターの皆様へ」という有用な記事が紹介されている。

エラーも多様化している

最近はWEBサイトやサーバも高度化しており、エラーも多様化している。「無効なSSL証明書」、「ワイルドカード DNS」、「バーチャルホスティングの設定ミス」、「ホスト専用URLでの重複コンテンツ」、「ソフト404エラー」、「クロスドメインURLの選択問題発生」、「コンテンツの変更とフレーム」など、正規化にかかわるエラーも増えている。 とくに「検索エンジンをあざむこうとする処理」には「悪意を持つエラー」としてグーグルは敵意を持っているので注意が必要だ。

自分が意図していなくても、グーグルが「悪意を持った不正」という判断をするとペナルティが科せられることがある。最悪の場合はインデックス削除となり、検索結果から表示されなくなってしまう。グーグルからインデックス削除されてしまうとヤフーの検索結果からも消えてしまうので重大な問題である。

クロールエラーのHTTPステータスコード

クロールエラーのHTTPステータスコードを確認して対策を検討しよう。

HTTPステータスコードの一覧(以下はグーグルウェブマスターツールのHTTPステータスコードより引用)

サイトのページのリクエストがサーバーに送信されると(ユーザーがブラウザでページにアクセスする場合や Googlebot がページをクロールする場合など)、サーバーではリクエストに対するレスポンスとして HTTP ステータス コードを返します。

ステータス コードには、リクエストのステータス情報が含まれます。ステータス コードでは、サイトとリクエストされたページに関する Googlebot の情報を確認できます。

一般的なステータス コードは次のとおりです:

  • 200 – サーバーはページを正常に返しました
  • 404 – リクエストされたページは存在しません
  • 503 – 一時的な問題により、サーバーにアクセスできません

HTTP ステータス コードのリストを下記に示します。リンクをクリックすると詳細が表示されます。HTTP ステータス コードに関する W3C のページもご覧ください。

1xx(暫定レスポンス)
暫定レスポンスを示すステータス コードです。リクエスト送信者は処理を続行する必要があります。

コード 説明
100(続行) リクエストを続行してください。サーバーは、リクエストの最初の部分を受信し、残りの部分を待っていることを示すためにこのコードを返します。
101(プロトコル切り替え) サーバーはプロトコル切り替えのリクエストを受信し、承認しました。

2xx(成功)

サーバーがリクエストを正しく処理したことを示すステータス コードです。

コード 説明
200(成功) サーバーはリクエストを正しく処理しました。通常、リクエストされたページがサーバーから返されたことを示します。robots.txt ファイルのステータスがこのステータスの場合、Googlebot が正常にファイルの情報を取得したことを示します。
201(作成済み) リクエストは正常に送信され、サーバーは新しいリソースを作成しました。
202(受理済み) サーバーはリクエストを受理しましたが、まだ処理は行われていません。
203(信頼できない情報) サーバーはリクエストを正しく処理しましたが、他のソースから取得した可能性のある情報を返しました。
204(コンテンツなし) サーバーはリクエストを正しく処理しましたが、返されたコンテンツはありません。
205(コンテンツ リセット) サーバーはリクエストを正しく処理しましたが、返されたコンテンツはありません。204 レスポンスとは異なり、このレスポンスは、新規入力用に入力フォームをクリアするなど、リクエスト送信者がドキュメント ビューをリセットする必要があることを示しています。
206(部分的コンテンツ) サーバーは GET リクエストの一部を正しく処理しました。

3xx(リダイレクト済み)
リクエストを実行するには、さらに操作を行う必要があります。通常、このステータス コードはリダイレクトに使用されます。リクエストあたりのリダイレクト数は 5 未満にすることをおすすめします。ウェブマスター ツールを使用して、リダイレクトされたページに対する Googlebot のクロールに問題があるかどうかを確認できます。[診断] にある クロール エラー ページには、リダイレクト エラーが原因で Googlebot がクロールできなかった URL が表示されます。

コード 説明
300(複数の選択肢) リクエストに対して選択可能な複数のサーバー操作があります。サーバーは、リクエスト送信者(ユーザー エージェント)に応じて操作を選択します。また、リクエスト送信者が操作を選択できるよう、サーバーでリストが提示される場合もあります。
301(恒久的な移動) リクエストされたページは新しい場所へ完全に移動されました。サーバーが GET リクエストや HEAD リクエストに対してこのレスポンスを返すと、リクエスト送信者は新しい場所に自動的に転送されます。Googlebot にページやサイトが新しい場所に完全に移動したことを通知するときに、このコードを使用してください。
302(一時的な移動) 現在、サーバーは別の場所にあるページを使用してリクエストに応答しています。しかし、今後のリクエストでは、リクエスト送信者は引き続き元の場 所を使用する必要があります。このコードは GET または HEAD リクエストに対する 301 コードと同じように、リクエスト送信者を別の場所に自動的に転送しますが、Googlebot は引き続き元の場所をクロールしてインデックスに登録するため、このコードを使用して Googlebot にページやサイトが移動したことを指示することはできません。
303(他の場所を参照) リクエスト送信者が別の場所に対する GET リクエストを別個に作成してレスポンスを取得する必要がある場合、サーバーはこのコードを返します。HEAD リクエスト以外のすべてのリクエストについては、サーバーはリクエスト送信者を他の場所へ自動的に転送します。
304(変更なし) リクエストされたページは、前回のリクエストから変更されていません。サーバーがこのレスポンスを返す場合、ページのコンテンツは返されません。

前回のリクエストからページが変更されていない場合、If-Modified-Since HTTP ヘッダー と呼ばれるこのレスポンスを返すようにサーバーを設定する必要があります。これにより、前回のクロールからページが変更されていないことが Googlebot に通知されるため、帯域幅や負荷を軽減できます。

305(プロキシを使用) リクエスト送信者は、プロキシを使用した場合のみ、リクエストされたページにアクセスできます。サーバーがこのレスポンスを返す場合、リクエスト送信者が使用する必要のあるプロキシも示されます。
307(一時的なリダイレクト) 現在、サーバーは別の場所にあるページを使用してリクエストに応答しています。しかし、今後のリクエストでは、リクエスト送信者は引き続き元の場 所を使用する必要があります。このコードは GET または HEAD リクエストに対する 301 コードと同じように、リクエスト送信者を別の場所に自動的に転送しますが、Googlebot は引き続き元の場所をクロールしてインデックスに登録するため、このコードを使用して Googlebot にページやサイトが移動したことを指示することはできません。

4xx(リクエスト エラー)
リクエストにサーバーでの処理を妨げるエラーが存在する可能性を示すステータス コードです。

コード 説明
400(不正なリクエスト) サーバーはリクエストのシンタックスを認識できませんでした。
401(未認証) このリクエストには、認証が必要です。サーバーは、ログインを必要とするページで、このレスポンスを返すことがあります。
403(禁止) サーバーはリクエストを拒否しました。Googlebot でサイトの有効なページをクロールしようとしたときにこのステータス コードを受け取ると、ウェブマスター ツールの [診断] にある [ウェブ クロール] ページに表示されます。この場合、ご使用のサーバーやホストが Googlebot のアクセスをブロックしている可能性があります。
404(Not found) サーバーはリクエストされたページを見つけることができません。たとえば、サーバーに存在しないページをリクエストすると、通常、サーバーはこのコードを返します。

サイトに robots.txt ファイルを設定しておらず、ウェブマスター ツールの [診断] タブの robots.txt ページに 対してこのステータスが表示される場合は問題ありません。ただし、robots.txt ファイルを設定していて、このステータスが表示される場合は、robots.txt ファイルの名前が間違っているか、ファイルが間違った場所にある可能性があります(ファイルはドメインの最上位にあり、robots.txt という名前である必要があります)。

[診断] タブの [HTTP エラー] ページで、Googlebot がクロールしようとした URL にこのステータスが表示される場合、Googlebot が別のページから無効なリンク(古いリンクや間違った URL が入力されたリンク)をたどった可能性があります。
405(許可されていないメソッド) リクエストで指定されたメソッドは使用できません。
406(受理できない) リクエストされたページは、リクエストされたコンテンツの特性を返すことができません。
407(プロキシ認証が必要) このコードは 401(未認証)コードと似ていますが、リクエスト送信者がプロキシを使用して認証を行う必要があることを示します。サーバーがこのレスポンスを返す場合、リクエスト送信者が使用する必要のあるプロキシも示されます。
408(リクエスト タイムアウト) サーバーは、リクエスト待機中にタイムアウトしました。
409(矛盾) リクエストを実行する際に、サーバーで矛盾が発生しました。サーバーのレスポンスには、矛盾に関する情報が含まれています。サーバーは、以前のリ クエストと矛盾する PUT リクエストへのレスポンスで、リクエスト間の相違点のリストとともに、このコードを返すことがあります。
410(存在しない) リクエストしたリソースが完全に削除されている場合、サーバーはこのレスポンスを返します。このコードは 404(見つかりませんでした)コードと似ていますが、以前は存在し、現在は存在しないリソースについて、404 コードの代わりに使用されることがあります。リソースが完全に移動した場合は、301 コードを使用して、リソースの新しい場所を指定する必要があります。
411(長さが必要) サーバーは、有効な Content-Length ヘッダー フィールドのないリクエストを受理しません。
412(前提条件の失敗) サーバーが、リクエスト送信者がリクエストで指定した前提条件のいずれかを満たしていません。
413(リクエスト エンティティが大きすぎる) リクエストが大きすぎるため、サーバーはリクエストを処理できません。
414(リクエストされた URI が長すぎる) リクエストされた URI(通常は URL)が長すぎるため、サーバーは処理できません。
415(サポートされていないメディア タイプ) リクエストされたページでサポートされていない形式のリクエストです。
416(リクエストされた範囲にない) ページで利用できない範囲にリクエストがある場合、サーバーはこのステータス コードを返します。
417(リクエストされた処理を実行できない) サーバーは、Expect request-header フィールドの条件を満たしていません。

5xx(サーバー エラー)
リクエストの処理を試行した際に、サーバーで内部エラーが発生したことを示すステータス コードです。リクエストではなく、サーバー自体にエラーがあります。

コード 説明
500(サーバーの内部エラー) サーバーでエラーが発生し、リクエストを実行できません。
501(未実装) サーバーにリクエストを実行する機能がありません。たとえば、サーバーでリクエストのメソッドを認識できない場合にこのコードを返すことがあります。
502(不正なゲートウェイ) サーバーはゲートウェイまたはプロキシとして動作していて、上位のサーバーから無効なレスポンスを受け取りました。
503(サービス利用不可) 現在、サーバーは過負荷状態やメンテナンスによる停止のため利用できません。通常、この状態は一時的なものです。
504(ゲートウェイ タイムアウト) サーバーはゲートウェイまたはプロキシとして動作しており、上位のサーバーから時間内にリクエストを受け取れませんでした。
505(サポートされていない HTTP バージョン) リクエストで使用された HTTP プロトコル バージョンがサーバーでサポートされていません。