• robots.txtのワイルドカードは*で文字列を広げ、$でURL末尾を固定する

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は変わりません。

作業は次の順に進めます。

  1. 現在のrobots.txtを保存する
  2. 遮断したいURLと残したいURLを用意する
  3. テスターで変更案を試す
  4. サーバー上のrobots.txtを更新する
  5. 公開されたファイルを取得し、同じURLを再確認する

制作会社へ変更を依頼する場合は、patternだけでなく、遮断対象と許可対象のURL一覧も受け取ってください。ファイルの編集を委託しても、どのURLをcrawlerへ見せるかという判断と記録はsite運用側に残ります。

最初の一手は、追加しようとしているpatternへ一致するURLを三つ、似ているが一致させたくないURLを三つ書き出すことです。*と$を加えた後で、六つすべてをrobots.txtテスターへ入力してください。

戻る