Robots.txt パーサー

robots.txt を貼り付けて、クローラーと同じように読みます。 RFC 9309(Robots Exclusion Protocol、2022 年標準化)に従い: user-agent グループ、Allow/Disallow 規則、 サイトマップと未知のディレクティブをすべて展開 — 加えて古典的ミスの監査 (空の Disallow 行、未知のディレクティブ、過大ファイル)。 マッチャーが本物の問いに答えます:UA とパスを貼ると、判定を決めた 正確な規則つきで許可 / 拒否の評決が得られます — 最長一致、ワイルドカード *、終端アンカー $、グループのマージ。 すべて標準の規定どおり。すべてブラウザー内で動作します。
まだ何も解析されていません。上に robots.txt を貼り付けて解析を押すか、サンプルを読み込んでください。
マッチャーは上のボックスにある現在のテキストに対して動作します(先に解析を押す必要はありません)。 UA は RFC 9309 の定義どおりに照合されます:ファイル内の User-agent 値が、 ここに入力したものの大文字小文字を無視した部分文字列であれば一致 — したがって ExampleBot/1.0 と入力すると ExampleBot として宣言された グループに一致します。パスには完全な URL も受け付けます。
ユーザーエージェント(実際の UA 文字列も可) パス、または完全な URL
まだ評決はありません。許可をテストを押してください。
ファイルの取得方法:をブラウザーで開き、 全選択してコピーし、ここに貼り付ける — またはhttps://your-domain.example/robots.txtターミナルで。このページが自ら何かを取得することは決してありません:貼り付けられたものだけを読みます。 ファイルを運んだレスポンスヘッダーを調べるには、curl -s https://your-domain.example/robots.txtターミナルに通してください。このページ自体は何も取得しません。貼り付けた内容を読むだけです。そのファイルを運んだレスポンスヘッダーを検査するには、それらをHTTP ヘッダーパーサー.
セルフテスト
RFC 9309 の参照ベクトルに対してパーサーとマッチャーを再実行します:最長一致の優先(allow が disallow に勝つ同長ケースと深いパスのケースを含む)、グループのマージ、*グループのフォールバック、パスと UA の大文字小文字、ワイルドカード、$アンカー、/robots.txt の暗黙の許可、 パーセントエンコーディング正規化、サイトマップ抽出、ネガティブパス。 何もどこにも送信されません。
robots.txt とは何か?
一文で言うと:robots.txt とは、サイトのルートに置かれたプレーンテキストで、 行儀のよいクローラーにどのパスを取得してよいかを伝えます — 2022 年に RFC 9309 として標準化された自主的な慣例で、すべての主要クローラーが尊重します。
ファイルの形

ファイルはレコードの列です。グループは 1 行以上の User-agent 行で始まり、 それらのクローラーに適用される Allow と Disallow 規則が続きます。 規則の後の新しい User-agent 行は新しいグループの開始。連続する複数の User-agent 行は 1 つのグループを共有します(2 つの名前を持つクローラーに必要)。 Sitemap のような独立レコードはどこにでも置けます。# は行のどこからでもコメントを開始します。 フールド名は大文字小文字を無視、パスは無視しません。

行意味
User-agent: foobot下の規則は名前に foobot を含むクローラーに適用(大文字小文字を無視)
User-agent: *下の規則は、より固有のグループを持たないすべてのクローラーに適用
Disallow: /private//private/ で始まるパスを取得しない
Allow: /private/public/上の Disallow に勝つ例外(これらのパスに対して。最長一致)
Disallow:(空)何も禁止しない — 古典的な「全許可」の書き方
Sitemap: https://…/sitemap.xmlサイトマップの所在。クローラーは複数を収集することがある
Crawl-delay: 30RFC 9309 になし — レガシー拡張。主要クローラーは無視するか独自解釈
判定の導き方(RFC 9309 §2.2.2)

1. User-agent 値がクローラー名の部分文字列であるグループを探し、一致するグループをすべてマージ。なければ * グループを使い、それもなければすべて許可。2. パスをすべての規則に対してテスト:一致はプレフィックス基準・大文字小文字区別・*/$ はワイルドカードとして動作。3. 最長の一致規則が勝つ。同長なら Allow が Disallow に勝つ。一致する規則がなければ許可。そして規則が何と言おうと /robots.txt 自身は暗黙に許可 — さもなければクローラーは規則を読めないからです。

よくある間違い
  • robots.txt がアクセスをブロックすると信じる。行儀のよいクローラーへの要求であって壁ではありません:悪質なスクレイパーは完全に無視し、ブラウザーが開けるものには何の効果もありません。本物の保護には認証を。検索エンジンの誘導だけなら robots.txt が正しい道具です。
  • Disallow: / が検索結果からページを消すと期待する。クロールを止めるだけで、インデックスは止めません:他のページから自サイトへのリンクがあれば、検索エンジンは(説明なしで)URL を載せることがあります。除去の道具は noindex meta タグまたはレスポンスヘッダーです。
  • 長さではなく順序に頼る。最初に一致した規則は勝ちません — 最も固有(最長)のものが勝ちます。動作を「直す」ための行の並べ替えは無意味。意図する規則を長くしてください。
  • CSS と JS をブロックする。/*.css$ と /*.js$ の Disallow はかつて一般的な「最適化」でした。現在のレンダラーは訪問者と同じようにページを見るためにそれらを必要とし、半レンダーのページは評価が下がることがあります。
  • 1 つの大きなグループをドキュメント扱いする。グループ内のコメント行は問題ありませんが、最初の User-agent 行の前に # なしの散文段落があるのは解析エラーで、緩いパーサーを混乱させることがあります。
よくある質問

すべてのクローラーが Allow、*、$ に対応している?主要どころは対応し、RFC 9309 が 3 つすべてを標準化しています。小規模・古いクローラーには Disallow しか理解せず * を文字通り読むものがあります — 可能なら規則をシンプルに保つ理由のひとつです。

空の Disallow: は何を意味する?「何も禁止しない」— そのグループは明示的にすべて許可します。テンプレートを編集してパスだけ消したときによく現れ、監査が指摘します。

ファイルはどのくらい大きくてよい?RFC 9309 はパーサーに少なくとも 500 KiB の処理を要求します。それを超えるとクローラーは読むのをやめ、残りを禁止扱いにすることがあります。十分余裕を持って抑え、巨大になるならクロール制御をページヘッダーに移すべきか検討してください。

Disallow: / の下でもマッチャーが /robots.txt を許可と言うのはなぜ?標準がそう明言しているためです。robots ファイル自身は暗黙に許可されます。Python の urllib.robotparser などはこの特例を実装していません — このページがセルフテストで文書化している、現実のパーサー間の小さな分歧のひとつです。

Disallow のパスは大文字小文字を区別する?はい。/Private/ と /private/ は異なるパスです。フィールド名 disallow は任意のケースでよく、値は URL と正確に一致しなければなりません。