robots.txtのワイルドカードは*で文字列を広げ、$でURL末尾を固定する
公開日: 執筆:佐藤
robots.txtで似たURLをまとめて指定するなら、*は任意の文字列、$はURLの末尾を表すために使います。ただし、短いpatternほど想定外のURLまで含みやすくなります。規則を書く前に、遮断したいURLと残したいURLを並べ、両方をテスターへ入力してください。
robots.txtが制御するのはcrawlerの取得です。検索結果からURLを消す指定ではありません。検索結果への掲載を止めたい場合は、robots.txtで取得を遮断する前に、noindexやHTTP statusなど、目的に合う方法を選びます。
*は途中の文字列をまとめる
GoogleのRobots Exclusion Protocolに関する説明では、*を任意の文字列に一致させる記号として案内しています。
たとえば、次の規則は、/privateで始まるdirectory名をまとめて対象にします。
User-agent: Googlebot
Disallow: /private*/
このpatternには、/private/だけでなく、/private-files/や/private-old/も一致します。privateという文字列を含むdirectoryをすべて遮断したいのか、一つのdirectoryだけを遮断したいのかを先に決めてください。後者なら、ワイルドカードを使わず、対象pathをそのまま書く方が範囲を読み取りやすくなります。
$はURLの末尾を固定する
$は、直前までのpatternがURL末尾で終わることを示します。たとえば、PDFだけをまとめて対象にする規則は次のように書けます。
User-agent: Googlebot
Disallow: /*.pdf$
$がなければ、.pdfの後ろに別の文字列が続くURLもpatternへ含まれます。拡張子で対象を決めたい場合は、途中一致と末尾一致を混同しないようにします。
| 指定 | 意味 | 確認するURLの例 |
|---|---|---|
/private*/ |
/privateから始まるdirectory |
遮断したいdirectoryと、似た名前で残したいdirectory |
/*.pdf$ |
.pdfで終わるURL |
PDFと、.pdfの後ろに文字が続くURL |
/search?* |
/search?の後ろに文字列が続くURL |
parameter付きURLと、parameterのない検索ページ |
表のpatternは説明用の仮例です。実際のURL構造へそのまま貼らず、siteで使っている大文字と小文字、slash、拡張子、query parameterを確認してから書き換えてください。
Allowは遮断範囲の中へ例外を作る
GooglebotはAllowを解釈します。directory全体をDisallowし、その中の一ページだけを取得させたい場合は、例外を明示できます。
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
この規則では、/folder1/をまとめて遮断し、/folder1/myfile.htmlを例外として残します。例外が増えるほど、規則を見ただけでは対象を判断しにくくなります。公開するページが多いdirectoryなら、directory全体を遮断して例外を列挙する設計そのものを見直してください。
AllowとワイルドカードはGooglebotが対応する拡張です。ほかのcrawlerも同じように解釈するとは限りません。Googlebotだけに規則を適用するのか、複数のcrawlerへ共通に使うのかを分けます。
patternを書く前にURL一覧を作る
最初に、目的と対象を次の三列へ分けます。
| URL | 取得させるか | 理由 |
|---|---|---|
/search?q=sample |
遮断する | 同じ検索結果URLが多数できるため |
/search/help |
許可する | 検索方法を説明する固定ページのため |
/files/guide.pdf |
遮断する | HTML版だけを取得対象にする方針のため |
この表も仮例です。PDFを検索から外すべきだという意味ではありません。目的が決まっていないまま拡張子やparameterをまとめて遮断すると、利用者に見つけてほしい資料までGooglebotが取得できなくなります。
対象URLを決めたら、狭い指定から試します。一つの規則で多くのURLを処理することより、残すURLを誤って遮断しないことを優先してください。
サーバー上のrobots.txtとテスト結果を分ける
Googleウェブマスターツールのrobots.txtテスターでは、指定したURLをGooglebotが取得できるか、どの規則が一致するかを確認できます。編集欄で試しただけでは、サーバー上のrobots.txtは変わりません。
作業は次の順に進めます。
- 現在のrobots.txtを保存する
- 遮断したいURLと残したいURLを用意する
- テスターで変更案を試す
- サーバー上のrobots.txtを更新する
- 公開されたファイルを取得し、同じURLを再確認する
制作会社へ変更を依頼する場合は、patternだけでなく、遮断対象と許可対象のURL一覧も受け取ってください。ファイルの編集を委託しても、どのURLをcrawlerへ見せるかという判断と記録はsite運用側に残ります。
最初の一手は、追加しようとしているpatternへ一致するURLを三つ、似ているが一致させたくないURLを三つ書き出すことです。*と$を加えた後で、六つすべてをrobots.txtテスターへ入力してください。
関連記事

