robots.txtガイド

robots.txtのワイルドカードと優先順位:*、$、最長一致

robots.txtの*と$の意味、AllowとDisallowが競合したときの最長一致、行順では決まらない優先順位を例付きで解説します。

Robots.txt Tools Editorial Team による最終確認 2026-09-13約6分で読めます
robots.txtのワイルドカードと優先順位:*、$、最長一致

robots.txtの一致判定は「後に書いた行が勝つ」仕組みではありません。適用対象のAllowDisallowを比較し、基本的にはより具体的に一致するパスが優先されます。RFC 9309では、一致するパス長が最も長いルールを最も具体的なものとして扱い、同等のAllowDisallowならAllowを優先することが示されています。

Googleも実務上同じ最長一致の考え方を案内し、パスルールで*$をサポートしています。

* と $ の意味

  • *:0文字以上の文字列に一致
  • $:URLの末尾を示す

例:PDFで終わるパスを対象にする場合。

User-agent: *
Disallow: /*.pdf$

末尾の$があるため、.pdfで終わるパスに絞られます。一方、次はより広く一致します。

Disallow: /*.pdf

末尾の*は不要なことが多い

Googleの一致方法では、次の2つは実質的に同じ範囲を対象にします。

Disallow: /private
Disallow: /private*

/privateは先頭一致するため、/private.html/private/pageも対象になり得ます。ディレクトリだけを意図するなら/private/のように末尾スラッシュを使うと意図が明確です。

行順ではなく最長一致

User-agent: *
Disallow: /products/
Allow: /products/public/

/products/public/widgetには両方が一致しますが、/products/public/の方が具体的なのでAllowが勝ちます。順序を逆にしても、行が後だから勝つという考え方にはなりません。

User-agent: *
Allow: /products/public/
Disallow: /products/

CSSのような「後勝ち」を前提にrobots.txtを設計しないでください。

同じ具体性で競合した場合

RFC 9309では同等のAllowDisallowが一致した場合、Allowを使うことが推奨されています。Googleも同じ具体性では制限の弱い結果を選ぶと説明しています。

ただし、運用では同点に依存するより、ルールをより明確に書く方が安全です。

パス値は大小文字を区別する

フィールド名User-agentDisallowは大小文字を区別しませんが、パス値は区別されます。

Disallow: /Admin/

Disallow: /admin/

は同じとは限りません。アプリが両方を提供する場合は両方をテストしてください。

クエリパラメータとワイルドカード

ECサイトでは次のようなルールを見かけます。

User-agent: *
Disallow: /*?sort=

ただし複数パラメータの順序が変わると想定外の一致になる場合があります。robots.txtだけで無制限なファセットURLを管理するのではなく、内部リンク、canonical、URL設計も一緒に整理してください。

複雑な正規表現のように使わない

robots.txtのワイルドカードは完全な正規表現ではありません。安定したディレクトリを単純なプレフィックスで表現できるなら、その方が保守しやすいです。

Disallow: /internal-search/

は、意図が分かりにくい複雑なパターンの組み合わせよりレビューしやすくなります。

実URLでテストする

次のルールなら、許可されるURLとブロックされるURLの両方を用意します。

User-agent: *
Disallow: /reports/
Allow: /reports/public/
Disallow: /*.csv$

確認例:

  • /reports/private/quarterly
  • /reports/public/overview
  • /downloads/data.csv
  • /downloads/data.csv?preview=1
  • /REPORTS/private/quarterly

これでプレフィックス、大小文字、末尾アンカー、重複ルールの思い込みを公開前に見つけられます。

推奨手順

  1. まず「何を許可・拒否したいか」を文章で書く
  2. 最小のプレフィックスルールで表現する
  3. 必要な場合だけ*$を追加
  4. 許可・拒否のテストURLを作る
  5. 構文を検証
  6. 対象User-agentで各URLをテスト
  7. 公開後の/robots.txtを再取得
  8. ログで実際のクロールを確認

要点は、行順より具体性が重要ということです。ワイルドカードは必要なときだけ使い、複数ルールが同じURLへ一致する場合は必ず実URLで判定を確認してください。

関連ガイド