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を検索結果に表示することがある。