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は強制力を持つものではないため、過信は禁物です。
参考情報