Robots Exclusion Standard

robots.txtとは



robots.txtは、ウェブサイトのルートディレクトリに配置されるテキストファイルで、クローラ(ウェブボット)に対して、サイト内のどのページをクロール(巡回)して良いか、またはクロールを禁止するかを指示するためのものです。

これは、クローラウェブサイト全体または一部を走査することを防ぐためのプロトコルであり、「ロボット排除規約」や「robots.txtプロトコル」とも呼ばれます。主に検索エンジンウェブサイトの内容を分類・アーカイブするために使用されますが、ウェブマスターがソースコードを校正する際にも役立ちます。

直接的な関係はないものの、クローラを誘導する役割を持つSitemapと組み合わせて使用されることもあります。

歴史



robots.txtは、1994年頃にWebCrawlerという検索エンジンで働いていたMartijn Koster氏によって考案されたとされています。同年6月にはメーリングリストで合意され、翌年にはAltaVistaなどの検索エンジンが登場すると共に広く普及しました。

2007年には、robots.txtを補完するものとしてACAP (Automated Content Access Protocol) v1.0が登場しましたが、主要な検索エンジンによる採用は見送られています。

2019年、GoogleはIETFでの標準化を進めることを発表し、2022年9月にはRFC 9309として提案されました。

概要



ウェブサイトの所有者は、クローラへの指示をrobots.txtに記述します。このファイルは、ウェブサイトのルートディレクトリに配置されます(例:`www.example.com/robots.txt`)。

クローラはまずこのファイルにアクセスし、記述された指示に従ってウェブサイトのクロールを行います。robots.txtが存在しない場合、クローラはサイト所有者による特別な指示がないと判断します。

robots.txtでは、特定のファイルやディレクトリのクロールを禁止できます。これにより、プライバシーに関わる情報や、サイトの分類に誤解を与える可能性のある情報、特定のアプリケーションのみが読み込むデータなどを、検索エンジンから隠すことができます。

下位ドメインを持つウェブサイトでは、各下位ドメインごとにrobots.txtファイルが必要です。例えば、`example.com`にrobots.txtがあっても、`a.example.com`にrobots.txtがなければ、`example.com`のrobots.txtの内容は`a.example.com`には適用されません。

robots.txtの欠点



robots.txtはあくまでもクローラの協力を前提としたものであり、強制力はありません。したがって、robots.txtでクロールを禁止したからといって、プライバシーが完全に保護されるわけではありません。

robots.txtでクロールを禁止したファイルでも、ウェブブラウザを使えば誰でも閲覧可能です。また、robots.txtを無視するクローラも存在します。

robots.txtに記述されたパターンは、パス名との一致で判断されるため、ディレクトリを指定する際は、末尾に`/`を付ける必要があります。これを怠ると、同じ文字列を含むファイルにもマッチする可能性があります。

robots.txtの記述例



全てのクローラに全てのファイルのクロールを許可する例



User-agent:
Allow: /


全てのクローラに全てのファイルのクロールを禁止する例



User-agent:
Disallow: /


全てのクローラに特定のディレクトリのクロールを禁止する例



User-agent:
Disallow: /dir1/
Disallow: /dir2/
Disallow: /dir3/
Disallow: /dir4/


特定のクローラに特定のディレクトリのクロールを禁止する例



User-agent: specific-crawler
Disallow: /private-dir/


特定のファイルのクロールを禁止する例



User-agent:
Disallow: /private.html


この場合、`/private.html`が存在するディレクトリの他のファイルはクローラから隠蔽されません。

コメントの記述



これはコメントです


User-agent:
Disallow: /private/

`#`から行末まではコメントとして扱われます。

規格外の拡張機能



Crawl-delay ディレクティブ


一部のクローラは`Crawl-delay`というパラメータをサポートしています。これにより、同一サーバへのリクエスト間隔を調整できます。

Allow ディレクティブ


一部のクローラは`Allow`ディレクティブをサポートしており、`Disallow`ディレクティブの反対の役割を果たします。特定のディレクトリ内の特定ファイルだけクロールを許可する場合などに使用します。

Googleでは`Allow`パターンを先に評価し、その後`Disallow`パターンを評価します。一方、Bingでは最も具体的なパターンが優先されます。


User-agent:
Allow: /folder1/myfile.html
Disallow: /folder1/

この例では、`/folder1/`ディレクトリ内の`/folder1/myfile.html`以外のファイルがクロール対象から除外されます。

Sitemap ディレクティブ


一部のクローラは`Sitemap`ディレクティブをサポートしており、一つの`robots.txt`内で複数のSitemapを指定できます。


Sitemap: https://example.com/sitemap1.xml
Sitemap: https://example.com/sitemap2.xml


Extended Standard for Robot Exclusion


`Visit-time`や`Request-rate`などのディレクティブを追加した拡張規格も提案されています。


Visit-time: 09:00-17:00
Request-rate: 5/min


まとめ



robots.txtはウェブサイトのクロール制御において重要な役割を担います。適切な記述を行うことで、プライバシーに関わる情報の保護や、サイトの効率的なクロールを実現できます。ただし、robots.txtは強制力を持つものではないため、過信は禁物です。

参考情報



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。