ウィキペディアにおけるRobots Exclusion Standardについては、「MediaWiki:Robots.txt」をご覧ください。
Robots Exclusion Standard(RES) または Robots Exclusion Protocol は、クローラやボットがウェブサイト全体またはその一部を走査することを防ぐ規約である。ロボット排除規約、robots.txt プロトコルとも呼ばれる。こういったボットは検索エンジンがウェブサイトの内容を分類しアーカイブするために主に使ったり、ウェブマスターがソースコードを校正するために使ったりする。直接の関係はないが、逆にボットを案内する目的のSitemapsと組み合わせて使うこともできる。 "robots.txt" は、1994年ごろWebCrawlerという検索エンジンで働いていた Martijn Koster が考案したとされている。1994年6月に robots-request@nexor.co.uk というメーリングリストのメンバーが合意して生まれた[1]。"robots.txt" はその翌年AltaVistaなどの検索エンジンが登場すると共に一般化していった。 2007年11月30日、ACAP (Automated Content Access Protocol
歴史
2019年、GoogleがIETFでの標準化を進めることを発表し[3]、2022年9月、.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}RFC 9309
として提案された[4]。ウェブサイトの所有者がボットに対して指示したい場合、そのウェブサイトの階層のルートに robots.txt というテキストファイルを置く(例えば、www.example.com/robots.txt)。サイト側の指示に従う選択をしているボットは、まずこのファイルにアクセスし、その指示を読み込んで、それに従ってそのウェブサイトの他のファイルの読み込みを行う。このファイルがない場合、ボットはそのサイトの所有者が特に何も指示していないと判断する。
robots.txt はボットに対して特定のファイルやディレクトリを検索しないよう指示する。これは例えば、検索エンジンからプライバシーに関わる情報を守る場合、指定したファイルやディレクトリの内容がサイトの分類をする際に誤解を与える虞がある場合、特定のアプリケーションのみが読み込むことを意図したデータの場合などがある。
下位ドメインがあるウェブサイトでは、各下位ドメインごとに robots.txt ファイルが必要である。example.com に robots.txt があっても、a.example.com になければ、example.com の robots.txt の内容は a.example.com には適用されない。 このプロトコルは全く拘束力がない。あくまでもボット側が協力することが前提であり、robots.txt で指定したからといってプライバシーが保たれることを保証するものではない。robots.txt で見られたくないファイルを指定したとしても、ウェブブラウザを使えば世界中の誰でもそのファイルを閲覧できる。また、このプロトコルを無視するボットを運用することも可能である。 なお、robots.txt に書かれたパターンは単純にパス名の部分と一致するかどうかで判断されるため、ディレクトリを指定する場合は最後に '/' を付けておかないと同じ文字列を含む任意のファイルとマッチする可能性がある。 ワイルドカード "*" を指定した例。あらゆるボットが全ファイルを走査できる。User-agent: *Disallow: あらゆるボットが全ファイルを走査できないようにした例。User-agent: *Disallow: / あらゆるボットが4つのディレクトリ配下を見ないよう指定した例。User-agent: *Disallow: /cgi-bin/Disallow: /images/Disallow: /tmp/Disallow: /private/ 特定のクローラが特定のディレクトリ配下に行かないよう指定した例。User-agent: BadBot # replace the 'BadBot' with the actual user-agent of the botDisallow: /private/ あらゆるボットが特定のファイルを見ないよう指定した例。User-agent: *Disallow: /directory/file.html この場合、そのディレクトリ配下の他のファイルはボットから隠蔽されない。 "#" からその行末まではコメントとして扱われる。# Comments appear after the "#" symbol at the start of a line, or after a directiveUser-agent: * # match all botsDisallow: / # keep them out いくつかの主要なクローラは Crawl-delay というパラメータをサポートしている。同一サーバに要求を繰り返す場合に指定された時間だけ待つよう指示するものである[5][6][7]。User-agent: *Crawl-delay: 10 いくつかの主要なクローラは Allow ディレクティブをサポートしており、それに続く Disallow ディレクティブの逆の作用をする[8][9]。これは、あるディレクトリ全体を隠蔽したいが、その中の一部ファイルだけは隠蔽したくないという場合に使う。標準的実装では常に先に書いてあるディレクティブが優先されるが、Googleは Allow のパターンを全て先に評価し、その後 Disallow のパターンを評価する。Bing は Allow も Disallow も最も具体的なものを優先する[10]。 あらゆるボットで互換な動作にするには、あるファイルへのアクセスを許す Allow ディレクティブを先に書き、そのファイルを含むディレクトリについての Disallow ディレクティブを後に書く。以下に例を挙げる。Allow: /folder1/myfile.htmlDisallow: /folder1/ この場合、/folder1/ というディレクトリの /folder1/myfile.html というファイル以外は隠蔽する。Googleに対しては順序は重要ではない。 一部のクローラは Sitemap ディレクティブをサポートしており、1つの robots.txt の中で複数のSitemapsを指定できる[11]。Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xmlSitemap: https://www.google.com/hostednews/sitemap_index.xml ⇒Extended Standard for Robot Exclusion と題してRESの拡張規格が提案されている。追加されたディレクティブとしては Visit-time や Request-rate がある。例えば次のようになる。User-agent: *Disallow: /downloads/Request-rate: 1/5 # maximum rate is one page every 5 secondsVisit-time: 0600-0845 # only visit between 06:00 and 08:45 UTC (GMT)
欠点
例
規格外の拡張
Crawl-delay ディレクティブ
Allow ディレクティブ
Sitemap ディレクティブ
拡張規格
脚注・出典[脚注の使い方]^ ⇒A Standard for Robot Exclusion
^ ⇒Information ACAP
^ 山本竜也 (2019年7月2日). “Google、REP(ロボット排除規約)のWEB標準化を推進へ
^ Koster, Martijn (2022年9月9日). “
^ “ ⇒How can I reduce the number of requests you make on my web site?”. Yahoo! Slurp. 2007年3月31日閲覧。
^ “ ⇒MSNBot が Web サイトをクロールする回数が多すぎる”. MSNBot および Web サイトのクロールに関する問題に対処する. 2010年9月23日閲覧。
^ “ ⇒About Ask.com: Webmasters”. 2010年9月23日閲覧。
^ “Googleウェブマスターセントラル - robots.txt ファイルを使用してページをブロックまたは削除する
^ “ ⇒How do I prevent my site or certain subdirectories from being crawled? - Yahoo Search Help”. 2007年11月20日閲覧。
^ “ ⇒Robots Exclusion Protocol - joining together to provide better documentation”. 2009年12月3日閲覧。
^ “ ⇒Yahoo! Search Blog - Webmasters can now auto-discover with Sitemaps”. 2009年3月23日閲覧。
関連項目
インターネットアーカイブ
ウェブアーカイブ
クローラ
外部リンク
Robots Exclusion(英語)
RFC 9309
robots.txt の概要
Manual:robots.txt/ja