robots.txtテスター
アドレスを入力し、クローラーを選んでください。サイトのrobots.txtを取得して標準どおりに適用し、そのアドレスが許可かブロックか、どの行で決まったかをお伝えします。
訪問のたびに読まれる、入口の貼り紙
行儀のよいクローラーは、ホストにページを求める前に /robots.txt というファイルを一つ要求します。このファイルには、サイトの持ち主が取得してほしくないパスが、どのクローラーが尋ねているかごとに並んでいます。何十年も慣習だけで運用されてきましたが、2022年にRFC 9309という文書化された標準ができました。このテスターはその文書に従っています。
ファイルはグループでできています。グループは1行以上の User-agent 行で始まり、Allow と Disallow のルールが続きます。
User-agent: *
Disallow: /cart/
Disallow: /*?sort=
User-agent: GPTBot
Disallow: /
Sitemap: https://www.example.com/sitemap.xmlホストごと、スキームごとに別のファイルがあります。https://www.example.com のルールは https://shop.example.com には何の影響もありません。
判定の決まり方
2つの選択を、この順番で行います。
- どのグループか。クローラーは、大文字小文字を区別せずに自分のトークンを名指ししたグループを探します。見つかれば、そのグループだけに従います。
User-agent: *に頼るのは、自分を名指ししたグループがない場合だけです。ここでよく間違えます。Googlebot用の短いグループを追加すると、*の下に書いたすべてのルールからGooglebotを解放したことになります。同じトークンを名指ししたグループは一つとして読まれます。いくつかのクローラーには文書化された第二候補があり、テスターはそれも適用します。Googlebot-ImageとApplebotは自分用のグループがなければGooglebotのグループに従い、YandexBotはYandexに従います。 - どのルールか。グループ内で、パターンがパスの先頭に一致するルールはすべて候補です。ファイル内の位置に関係なく、パターンが最も長い候補が勝ちます。同じ長さのAllowとDisallowが両方一致したら、Allowが勝ちます。何も一致しなければ、そのアドレスは許可です。
パターンはパスとクエリ文字列に対して、一文字ずつ、大文字小文字を区別して比べられます。特別な文字が2つあります。* は任意の文字の並びを表し、末尾の $ は「パスはここで終わる」という意味です。
| パターン | 一致する | 一致しない |
|---|---|---|
/fish | /fish, /fish.html, /fishing/rods | /Fish, /catfish |
/fish/ | /fish/, /fish/salmon | /fish, /fish.html |
/*.pdf$ | /guide.pdf, /docs/a.pdf | /guide.pdf?v=2 |
/*?sort= | /shoes?sort=price | /shoes?page=2&sort=price |
比較の前にパーセントエンコーディングはそろえられるので、/caf%C3%A9 と /café は同じパスです。
結果の読み方
概要には、判定、決め手となった行の番号、適用されたグループが表示されます。その下に、ファイルが行番号付きで表示されます。適用されたグループの行には線が付き、決め手の行は強調表示されます。複数のルールが一致した場合は、小さな表にパターンの長さと一緒に並ぶので、その長さを見ればなぜ一方が勝ったかがわかります。最後の表には、リストにあるほかのクローラーへの判定が出ます。一つのファイルがクローラーごとに違う扱いをすることはよくあるからです。
ファイルの中身と同じくらい、ファイルのステータスも重要です。
- 404などの4xx:ルールはなく、すべてのアドレスが許可です。403も含みます。ファイルへのアクセスを禁止しても、クロールを禁止したことにはなりません。
- 5xx、429、または応答なし:クローラーはルールを知ることができないので、ファイルが戻るまでサイト全体に入らないようにしなければなりません。
- 200で中身がウェブページ:有効な行がないので、何もブロックされません。不明なアドレスにすべてトップページで応答するサイトで起きます。
テスターは、クローラーが読み飛ばす行も報告します。User-agent 行より前に置かれたルール、不明または綴りを間違えたディレクティブ名、/ で始まらないパターン、500 KiBを超えるファイル、Noindex: 行(Googleは2019年に廃止)、Googlebotが無視する Crawl-delay です。
robots.txtにできないこと
これはお願いです。検索エンジンや大手AI企業は守ると言っています。スクレイパーやセキュリティスキャナーは守らないので、秘密のパスを書くのは絶対にやめてください。そもそもファイルは公開されていて、誰でも読めます。
ページをブロックしても、そのページが消えるわけではありません。ブロックされたページは取得されませんが、ほかのページからリンクされていれば、アドレスは検索結果に出ることがあります。インデックスから外したいなら、クロールできる状態のまま、metaタグか X-Robots-Tag ヘッダーで noindex を返してください。
このページは当サーバーからファイルを一度だけ読みます。クローラーは最大1日前のコピーを持っていることがあり、サイトが訪問者によって違うファイルを返すこともあります。また、クローラーごとに独自のパーサーがあります。綴りを間違えたディレクティブなど、標準が何も言っていない部分は、Googleが公開しているパーサーと同じように読み、その旨を表示します。
よくある質問
一つのクローラーだけブロックして、ほかは許可するには?
そのクローラー専用のグループを Disallow: / で作り、ほかには手を付けません。
User-agent: GPTBot
Disallow: /自分の名前のグループが見つからないクローラーは * グループを使い、それもなければ制限はありません。
Allowルールがあるのにページがブロックされるのはなぜ?
可能性は2つです。より長いDisallowパターンも一致していて、最長のパターンが勝っている。あるいは、Allowルールがクローラーの読まないグループにある。自分用のグループを持つクローラーは * グループをまったく無視するからです。テスターは、適用されたグループと一致したすべてのルールを表示します。
DisallowでGoogleからページが消えますか?
いいえ。Googleがページを取得するのは止めますが、アドレスが載るのは止めません。ページ自体に noindex を付け、そのページをrobots.txtでブロックしないでください。ブロックするとクローラーはその指示を見ることができません。
robots.txtは大文字小文字を区別しますか?
パスは区別します。Disallow: /Private は /private には効きません。ディレクティブ名とクローラー名は区別しません。user-agent: googlebot と User-Agent: Googlebot は同じ意味です。
空のDisallow行はどういう意味?
何も続かない Disallow: は何もブロックしません。その行だけのグループは「このクローラーはすべて取得してよい」という意味です。スラッシュ付きの Disallow: / はサイト全体をブロックします。
robots.txtの変更が反映されるまでどれくらい?
クローラーはファイルのコピーを保持していて、標準では24時間を超えて使わないよう求めています。新しいルールは1日以内、ときにはもっと早く守られると考えてください。新しいDisallowを追加しても、すでにインデックスにあるページは消えません。