すべての記事

robots.txt:検索ボットはクロールできる範囲をどう判断するか

robots.txtはサイトのルートに置くテキストファイルで、検索ロボットがクロールを始める前に読み込み、どの範囲を訪問してよいかを判断する。Googleだけでも用途ごとに別名のクローラーを使い分けており、単一の「Googlebot」がすべてを担っているわけではない。

User-agent、Disallow、Allowディレクティブ

ファイルはブロックの集まりで構成され、各ブロックはUser-agent:で始まり、続けて禁止パスを示すDisallowと許可パスを示すAllowが並ぶ。クローラーは自分の名前と一致する最初のブロックの規則に従い、該当ブロックがなければUser-agent: *の汎用ブロックに従う。

Googlebot-Imageなど、名前の異なる複数のGoogleクローラー

Googleは通常のWeb検索用Googlebotのほかに、画像検索専用のGooglebot-Imageなど、目的別に名前を分けたクローラーを運用している。robots.txtでこれらを個別に指定すれば、画像ディレクトリだけをGooglebot-Imageから除外しつつ、通常のGooglebotには同じページを開放しておくといった細かい制御ができる。

Sitemapディレクティブは強制ではなくヒント

Sitemap:ディレクティブは、sitemap.xmlの場所を検索エンジンに伝える。必須ではないが便利で、クローラーがサイトマップのパスを推測したり、サーチコンソールへの登録だけに頼ったりする必要がなくなる。

なぜこのチェックが必要か

  • 公開前にrobots.txtの構文を確認し、些細な入力ミスでサイト全体がクロール不可になる事故を防ぐ。
  • 異なるブロック間の矛盾したルールによって、重要なページが意図せず隠れていないか確認する。
  • 次回のクロールを待たずに、特定のuser-agentとパスの組み合わせをその場でテストする。

Disallowが検索結果からページを隠さない理由

最もよくある誤解がこれだ。Disallowはボットがページの内容をクロールすることを禁止するが、そのURLがインデックスされること自体は禁止しない。別のインデックス済みサイトからそのページへのリンクがあれば、Googleは内容を取得していないため説明文なしで、それでもURLを検索結果に表示することがある。

ツールを試す