[レベル: 中級]
robots.txt で指定する URL のパスには パーセントエンコーディング(Percent-encoding / URL エンコーディング)形式を推奨することを Google はドキュメントに追加しました。
Google はそのままでも処理するが
日本語や絵文字などのマルチバイト文字が含まれた URL を robots.txt に記述する場合、Google はそのままでも正常に解析できます。
こちらの robots.txt は有効です。
disallow: /no-crawl
disallow: /クロール禁止
disallow: /❌
1 行目はアルファベットのパスでクロール禁止しています。
何も問題ありません。
2 行目は「クロール禁止」という日本語が含まれています。
「クロール禁止」を % エンコーディングするとこうなります。
%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E7%A6%81%E6%AD%A2
3 行目の絵文字「❌」のパーセントエンコーディングはこうなります。
%E2%9D%8C
パーセントエンコーディングを使って robots.txt は次のようにも記述できます。
こちらの記述でも Google は正常に解析します。
ℹ️「こちらの記述でも」というよりは、こちらが標準(後述)
disallow: /no-crawl
disallow: /%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E7%A6%81%E6%AD%A2
disallow: /%E2%9D%8C
Googleのクローラー (Googlebot) は、robots.txt 内のパス指定において、そのまま記述した UTF-8 文字と、パーセントエンコーディングされた文字列の両方を、自動的に正規化して同一として処理します。
したがって、どちらで記述しても問題ありません。
標準化とエラー回避のためのパーセントエンコーディング
しかしながら、サードパーティ製ツールとの互換性を保つために、ルールパスにはパーセントエンコーディングを使用することが推奨されます。
ドキュメントに追加されたのは次の一文です。
While Google’s systems parse raw UTF-8 characters properly, using percent-encoding for rule paths can make it easier to process these files with third-party tools and services.
この記事を書いている時点では日本語ドキュメントは未更新なので、日本語に訳します。
Google のシステムは未エンコードの UTF-8 文字を正しく解析できますが、ルール内のパスにパーセントエンコーディングを使うと、サードパーティのツールやサービスでこれらのファイルを処理しやすくなります。
Google だけを考えるのであればどちらでも構いません。
しかし、ウェブをクロールするのは Google のクローラーだけではありません。
すべてのクローラーがルールを正しく解釈できるように互換性を考慮に入れると、文字をパーセントエンコードした表記を使うべきです。
また、パスに含まれる未エンコードの非 ASCII 文字(絵文字など)をクローラーが処理できない場合、disallow の行全体を無視する可能性があります。
その結果、クロールを禁止したいコンテンツがクロールされてしまうおそれがあります。
エラー回避のためにもパーセントエンコーディングが望ましいのです。
