robots.txt 検証

robots.txt 構文検証

RFC 9309規格に準拠したrobots.txtの構文検証ツール。User-Agent別のクロール許可判定、Disallowパスのデバッグ、XMLサイトマップ宣言の検査をブラウザ上で即座に実行。

標準サンプルを読込
クロール判定エンジンRFC 9309規格に基づく決定論的照合エンジンによる最長一致パス判定
ステップ1: 入力URI・UA解析HTTP 200ステップ2: RFCパス正規化29 バイト (オクテット)ステップ3: UAグループ特定 (1)該当行 1ステップ4: 最長一致解決2 Lbl candidatesクロール許可 (ALLOWED)
robots.txt ソースエディタ
12 行•272 B•1 グループ
有効なRFC 9309構文
クロール許可 (ALLOWED)

クローラーはこのURIへのアクセスおよびインデックス登録が許可されています。

Googlebot
適用された決定ルールRfc spec section
該当行該当行 8
ディレクティブ種別Allow: /catalog/
パターン長(特異度)9 バイト (オクテット)
対象User-Agentが特定のグループヘッダーに直接一致しました。専用グループが存在しないため、汎用ワイルドカード(User-agent: *)グループが適用されました。
判定決定の根拠ロジックパターン長が完全に同一のため、RFC 9309の規定に基づきAllowがDisallowに優先しました。
判定トレースログ
[1]Normalized URI Path: /catalog/shoes?sort=price_asc
[2]Target User-Agent: Googlebot
[3]HTTP Response Simulation: 200
[4]No exact bot match; fallback to wildcard group (User-agent: *) at line 1
[5]Line 6: [Disallow: /*?*sort=] MATCH (Length: 9, Regex: ^/.*\?.*sort=)
[6]Line 8: [Allow: /catalog/] MATCH (Length: 9, Regex: ^/catalog/)
[7]Line 8: Equal length tie resolved: Allow takes precedence.
[8]Final Verdict: ALLOWED by winning rule on line 8
正規化済みパス:/catalog/shoes?sort=price_asc
準拠規格・エンジンGooglebot Production Standard
総行数12
UAグループ1
サイトマップ数2
ファイルサイズ272 B
RFCステータスRFC 9309 適合
クロール判定結果クロール許可 (ALLOWED)
技術リファレンス・アーキテクチャガイド

Robots.txt Tester & Syntax Validator ガイド — 技術リファレンス

RFC 9309準拠のrobots.txt構文テストおよび検証ガイド。User-agentごとのクロール権限チェック、Disallowパスのデバッグ、サイトマップ構文の検証をブラウザ上で即座に実行できます。

Robots.txt Tester & Syntax Validator ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図
Robots.txt Tester & Syntax Validator ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図

主要パラメータと設定項目

User-agent ディレクティブクローラー識別パターン

後続のルールブロックが対象とする特定のクローラートークンまたはワイルドカードを指定します。大文字と小文字は区別されません。RFC 9309の規定により、完全一致するクローラートークンは、部分プレフィックス一致や汎用ワイルドカード(*)グループよりも厳格に優先されます。

初期値: *
Disallow パスパターンURIパスプレフィックスパターン

指定されたクローラーによるアクセスを禁止するURIパスのプレフィックスを指定します。値が空のDisallowディレクティブ(Disallow:)は、サイト内の全パスに対するクロールが許可されていることを意味します。

初期値: /private/
Allow ディレクティブの詳細度URIパス例外パターン

クローラーによるアクセスを許可するURIパスプレフィックスを指定し、通常は広範なDisallowパス内で例外を設けるために使用されます。RFC 9309において、AllowとDisallowの一致文字数(オクテット長)が同一である場合、Allowが優先されます。

初期値: /private/public-asset.js
ワイルドカードアスタリスク(*)パターンパターンマッチングトークン

パス文字列内の0文字以上の有効なURI文字シーケンスに一致します。動的なクエリパラメータ(例: /*?*sort=)や特定のファイル拡張子(例: /*.pdf$)のクロールをブロックする際によく使用されます。

初期値: /*?*sort=
URI終端アンカー($)境界アンカートークン

マッチングパターンをURLパスまたはクエリ文字列の終端に明示的に固定し、前方一致によるより深い階層の意図しないブロックを防止します。

初期値: /exact-page$
Crawl-delay ディレクティブレート制限ディレクティブ(非標準)

クローラーによる連続リクエスト間の待機間隔(秒単位)を指定します。Bingbot、Yandex、Baiduでは遵守されますが、Googlebotは完全に無視し、Google Search Consoleのクロール頻度設定を参照します。

初期値: 10
Sitemap 宣言メタデータロケーターディレクティブ

サイトのXMLサイトマップまたはサイトマップインデックスファイルの絶対HTTPS URLを宣言します。robots.txt内のUser-agentグループ内外を問わずどこにでも記述可能ですが、ドキュメントの末尾に配置するのがベストプラクティスです。

初期値: https://example.com/sitemap.xml
500 KiB ファイルサイズ上限プロトコル境界制限

RFC 9309 セクション2.1で規定されたrobots.txtファイルの公式仕様上限です。GoogleやBingなどの主要検索エンジンは、500キビバイト(512,000オクテット)を超える部分のパースを切り捨て、それ以降の内容を存在しないものとして処理します。

初期値: 500 KiB

現場のベストプラクティス・実践Tips

RFC 9309最長一致ルールは記述順序に優先

上から下へとルールを順番に評価するファイアウォールやアクセス制御リスト(ACL)とは異なり、公式のRobots Exclusion Protocol(RFC 9309)では、一致文字数(オクテット数)が最も多いディレクティブが常に優先されます。Disallow: /folder/sub/restricted/(25文字)の後にAllow: /folder/sub/(12文字)を記述した場合でも、ファイル内の記述順序に関係なく、より長いDisallowルールが該当配下パスに対して適用されます。

WordPressのadmin-ajax.phpブロックによるレンダリング低下の罠

Allow: /wp-admin/admin-ajax.phpを明示的に宣言せずに/wp-admin/をブロックすると、GooglebotのWeb Rendering Service(WRS)がフロントエンドの非同期AJAXリクエストを実行できなくなります。これにより、Googlebot側でページのレイアウト崩れが発生し、モバイルユーザビリティテストの不合格や、動的コンポーネントの不当なSEO評価低下を招きます。

robots.txtのDisallowはGoogleのインデックス登録を防げない

Disallowディレクティブは検索エンジンにページのコンテンツのクロールや取得を行わないよう指示しますが、外部からのリンクが存在する場合、URLがGoogle検索結果に表示されるのを阻止することはできません。GoogleはそのURLをスニペットなし(「このページに関する情報はありません」と表示)のリンクとしてインデックス登録します。インデックス登録を確実に防ぐには、クロールを許可した上で<meta name="robots" content="noindex">タグまたはX-Robots-Tag: noindex HTTPヘッダーを実装してください。

robots.txt内におけるNoindexディレクティブの完全廃止

Googleは2019年9月1日をもって、robots.txt内における非公式のNoindexディレクティブのサポートを正式に終了しました。robots.txt内に残されたnoindexルールは無効な構文として扱われるか、完全に無視されます。この旧来の回避策に依存しているサイトは、管理画面やステージング環境などの機密URLが意図せず検索結果にインデックス登録される重大なリスクを負うことになります。

検索インデックスと生成AI学習データの分離遮断

Google検索の自然検索順位を維持したまま、自社の独自コンテンツがAIモデルに学習用として収集されるのを防ぐには、GooglebotではなくGoogle-Extendedをブロックします。Google-ExtendedはGemini、Vertex AI、AI Overviewsの学習専用クローラートークンであり、Googlebotは通常のWeb検索インデックスを担当しています。

UTF-8 BOM付与によるパーサーのサイレント破損

robots.txtをBOM付きUTF-8(BOM: \uFEFF)で保存すると、先頭文字の前にBOMが付加されるため、厳格なパーサーが1行目のUser-agentトークンを正しく認識できなくなります。これにより最初のUser-agentグループが無効化され、検索エンジンは冒頭のディレクティブを孤立した無効行として処理してしまいます。

よくある落とし穴とトラブルシューティング

⚠️Google Search Consoleに「robots.txt によりブロックされましたが、インデックスに登録しました」と警告が表示される

この警告は、robots.txtでDisallowに設定されているページをGoogleが内部または外部の被リンク経由で検出した場合に発生します。Googleはページコンテンツを取得できないため、ページ内のnoindexタグを認識できません。解決するには、robots.txtのDisallowルールを削除してクロールを許可し、HTMLレスポンスに<meta name="robots" content="noindex">タグまたはX-Robots-Tag: noindexヘッダーを付与して、Googlebotがクロールしてインデックスから削除するのを待ちます。

⚠️明示的なAllowルールが無視され、URLがDisallowのままブロックされる

RFC 9309 セクション2.2.2に基づき、ディレクティブの評価はファイルの記述位置ではなく、一致する文字長の詳細度によって決まります。Disallowルールの一致文字数がAllowルールよりも多い場合(例: 20文字のDisallow: /products/archived/ と 10文字のAllow: /products/)、Disallowルールが優先されます。終端アンカー($)やより具体的なパスセグメントを使用して、Allowディレクティブが同等以上の一致文字数を持つように設定してください。

⚠️GooglebotがCrawl-delayを無視してWebサーバーのCPUやメモリを圧迫する

Googlebotはrobots.txtのCrawl-delayディレクティブをサポートしておらず、完全に無視します。Googlebotのリクエスト頻度を抑制するには、Google Search Consoleのクロール頻度設定で調整するか、Webサーバーやリバースプロキシ(Nginx、Cloudflare)側でRetry-After: 120ヘッダーを含むHTTP 429(Too Many Requests)またはHTTP 503(Service Unavailable)ステータスコードを返すように設定してください。

⚠️ディレクトリのDisallow設定がスラッシュなしのファイル名を誤ってブロックする

末尾のスラッシュなしでDisallow: /pressと記述すると、/press-releases/、/press.html、/pressure-washing/など、/pressで始まるすべてのURLに前方一致してしまいます。ブロック対象を対象ディレクトリ配下の階層のみに限定するには、必ず末尾にスラッシュを付加して「Disallow: /press/」と記述してください。

⚠️ワイルドカードでDisallowを指定しているにもかかわらずAIクローラー(CCBot、GPTBot等)が巡回を続ける

クローラーが固有の識別トークン(例: GPTBotやCCBot)を宣言している場合、RFC 9309の規定により、そのトークンに一致する個別のUser-agentグループが汎用の「User-agent: *」グループを上書きします。robots.txt内にGPTBot向けの許可ルールを含む別ブロックが存在する場合、ワイルドカードの制限は適用されません。「User-agent: GPTBot」「User-agent: ClaudeBot」「User-agent: CCBot」向けにそれぞれ明示的なブロックを作成し、「Disallow: /」を個別に設定してください。

よくある質問 (FAQ)

RFC 9309の最長一致ルールでは、AllowとDisallowの競合はどのように解決されますか?▼

IETF RFC 9309 セクション2.2.2に基づき、同一のUser-agentグループ内でURLがAllowとDisallowの両方のディレクティブに一致する場合、パーサーは各マッチパターンの長さ(オクテット数)を計算します。そして、一致文字数が最も長いディレクティブが優先されます。たとえばURL「/shop/sale/shoes」に対しては、Disallow: /shop/sale/(11文字)がAllow: /shop/(6文字)よりも優先されます。両パターンの文字数が完全に一致する場合、RFC 9309の規定によりAllowディレクティブが優先されます。

robots.txtでURLをブロックすると、Googleの検索結果への表示を防げますか?▼

いいえ、防げません。robots.txtによるブロックは、検索エンジンのクローラーがそのページのコンテンツをダウンロードして解析することを防ぐだけであり、インデックス登録そのものを防ぐわけではありません。他のWebサイトや内部ページから該当URLへのリンクが存在する場合、GoogleはアンカーテキストなどをもとにURLをインデックス登録し、説明文(スニペット)のない状態で検索結果に表示します。検索結果から完全に除外するには、robots.txtでのクロールを許可した上で、noindexメタタグまたはX-Robots-Tag: noindex HTTPレスポンスヘッダーを適用してください。

自然検索のSEO順位を落とさずにGPTBotやClaudeBotなどのAIクローラーをブロックするにはどうすればよいですか?▼

自然検索の表示順位を維持したままAI基底モデルの学習用クローラーをブロックするには、User-agent: GooglebotやUser-agent: Bingbotへのアクセスを許可した状態で、AIボット専用のUser-agentグループを追加してDisallow: /を指定します。主なAIボットトークンにはGPTBot、ChatGPT-User、ClaudeBot、AnthropicAI、CCBot、Google-Extended、PerplexityBot、Bytespider、Diffbotがあります。特にGoogle-Extendedをブロックすることで、通常のGoogle検索のクロールやインデックス登録に影響を与えることなく、Gemini等のAI学習利用のみを無効化できます。

robots.txtのDisallowとnoindexメタタグの違いは何ですか?▼

robots.txtのDisallowは「クロール制御」のディレクティブであり、検索エンジンボットによるページ取得を停止してサーバー帯域やクロールバジェットを節約しますが、インデックス除外を保証するものではありません。一方、meta name="robots" content="noindex"タグは「インデックス登録制御」のディレクティブであり、検索エンジンに対して検索結果一覧から該当ページを除外するよう指示します。noindexタグが処理されるには、検索エンジンがrobots.txtによってページをクロール可能である必要があります。

なぜGoogle検索はrobots.txtのCrawl-delayディレクティブを無視するのですか?▼

GooglebotがCrawl-delayディレクティブをサポートしていない理由は、Googleの分散クロール基盤が、オリジンサーバーの応答遅延やエラー率に基づいてリアルタイムにリクエスト頻度を自動調整する動的な負荷検知アルゴリズムを採用しているためです。Googlebotの負荷が過大になっている場合は、Google Search Consoleのクロール頻度設定で調整するか、Retry-Afterヘッダーを付与したHTTP 429または503ステータスコードを返してください。

検索エンジンがrobots.txtの読み込みを切り捨てるファイルサイズの上限はいくつですか?▼

公式のRFC 9309規格では、robots.txtの最大ファイルサイズ上限を500キビバイト(KiB、512,000オクテットに相当)と定めています。GoogleやBingを含む主要検索エンジンは、500 KiBを超えるrobots.txtファイルを切り捨てて先頭部分のみを処理し、それ以降のディレクティブをすべて破棄します。また、robots.txtの取得に30秒以上かかる場合、検索エンジンは一時的な5xxサーバーエラーとして扱い、サイト全体のクロールを一時停止することがあります。

関連開発者ツール

全ツール一覧 →
Markdown HTML 変換開発者ツール

Markdown をクリーンで本番品質の HTML コードへ瞬時にリアルタイム変換。GFM テーブル、コードハイライト、XSS サニタイズ、リッチテキストコピー、完全なドキュメント出力を完備。

ツールを開く→
Cron式パーサー・構文検証開発者ツール

Cron式を直感的な実行スケジュールに高精度変換。タイムゾーン別の次回実行予定日時の算出、crontab構文の妥当性検証、将来のトリガー予測を完全ローカルで実行します。

ツールを開く→
GraphQL TS型生成開発者ツール

GraphQL スキーマ(SDL)やクエリから TypeScript の型定義、インターフェース、Enum、リゾルバーを自動生成。設定不要・サーバー送信なしでブラウザ上で即座にコード生成できます。

ツールを開く→
HTML Markdown変換開発者ツール

HTMLやWebクリップをGitHub Flavored Markdown(GFM)に瞬時に変換。インラインスタイルを除去し、テーブルやコードブロックをクリーンなMDファイルとして出力します。

ツールを開く→
テキスト差分比較ツール開発者ツール

テキスト、コード、設定ファイルの差分を高速比較。左右分割やインラインでの文字単位の変更確認、空白の無視、Unified Diff(.patch)の出力に対応。

ツールを開く→
カノニカルタグ生成ツール開発者ツール

有効なrel=canonicalタグやHTTPレスポンスヘッダーを瞬時に作成。不要な追跡パラメータの削除、URL正規化、重複コンテンツによるSEO評価の分散を確実に防止します。

ツールを開く→