robots.txtとは、Webクローラに対してWebサイトの収集方法を指示するものです。ここではその記述方法について解説します。
すべてのWebクローラが、robots.txtの指示に従う保証はありません。
robots.txtを記述するファイルは、
の形式である必要があります。Robots.txt Specifications - Webmasters | Google Developers
そしてこのファイルをrobots.txtのファイル名で、「http://example.com/robots.txt」のようにドメインのルートに配置します。
ところでrobots.txtがこのように配置されていることを利用し、実際のサイトでの記述例を参照できます。
field:value#optional-comment
行頭と行末の空白は無視されます。また 「#」以降は、行末までコメントとして無視されます。
fieldには、
などを指定できます。
User-agent以下がグループとしてまとめられ、DisallowとAllowはそのグループに対して適用されます。
Google ウェブマスター ツールのrobots.txt テスター robots.txt レポートで、記述したrobots.txtに問題がないか確認できます。
User-agent: * Disallow: /sample/ Sitemap: http://example.com/sitemap.xml
パスにはワイルドカードを使用できます。
記述 | 適用されるパス | 説明 |
---|---|---|
/ | / | すべてのパス。 |
/a | ||
/b.html | ||
/* | (上に同じ) | (上に同じ) |
/aa | /aa | /aaから始まる、すべてのパス。 |
/aabb.html | ||
/aa/c.html | ||
/aa* | (上に同じ) | (上に同じ) |
/aa/ | /aa/ | /aa/から始まる、すべてのパス。つまり/aa/フォルダ以下に配置された、すべてのファイル。 |
/aa/c.html | ||
/aa/dd/e.php | ||
/*.php | /aa.phpbb.html | .phpに部分一致するすべてのパス。拡張子部分にマッチさせるには、次のようにする必要があります。 |
/*.php$ | /aa.php | 末尾が.phpとなっているパスのみ。このとき.php?a=bのようにパラメータが付加されているパスにはマッチしません。 |
robots.txtの解釈方法は、クローラによって異なります。
Googleにおいては、クロールをブロックしても他のサイトからリンクされていれば、インデックスに登録されることがあります。robots.txt の概要とガイド | Google 検索セントラル | ドキュメント | Google for Developers
たとえば、すべてのクローラからの/directory1/へのアクセスをブロックし、さらにGooglebotには/directory2/へのアクセスも禁止するならば、
User-agent: * Disallow: /directory1/ User-Agent: Googlebot Disallow: /directory2/
のように、2つ続けて記述します。
Googleのクローラ (Googlebot) に対しては、次のような指示が有効です。
Disallow: /
Disallow: /directory1/
Disallow: /directory1/directory2/
Disallow: /private_file.html
User-agent: Googlebot-Image Disallow: /
User-agent: Googlebot-Image Disallow: /images/dogs.jpg
User-agent: Googlebot Disallow: /*.gif$
User-agent: * Disallow: / User-agent: Mediapartners-Google Allow: /
削除したページは404または410ステータス コードを返すことで、再度のクロールを抑制できます。ページをブロックしても長い間クロール キュー (crawl queue) に残るため、ブロックを解除したときに再びクロールされます。おすすめの方法 - 大規模サイトのクロール バジェット管理 | Google 検索セントラル | ドキュメント | Google for Developers
Googlebotのアクセスを広範に遮断すると、Google ウェブマスター ツールでは「プロパティの健全性に重大な問題が発見されました。」として「重要なページが robots.txt によってブロックされています。」と報告されます。Googlebot がブロックされていないかどうか確認する - Search Console ヘルプ
fieldをSitemapとすることで、クローラに対してXMLサイトマップの場所を示せます。
Sitemap: http://example.com/sitemap.xml
Googleは24時間ごとに更新を確認しますが、これを即座に更新したいならばrobots.txt レポート (robots.txt report) で[再クロールをリクエスト]します。Google の robots.txt キャッシュを更新する - 更新した robots.txt を Google に再送する | Google 検索セントラル | ドキュメント | Google for Developers