SEO 百科

robots.txt 规范解读

本页目录

robots 协议是一套抓取工具读取 robots.txt 的约定,Google 的抓取工具支持它[3]。抓取网站之前,抓取工具会先下载并解析该文件,从中判断哪些部分允许抓取[3]。

协议与适用范围

这套约定的正式名称是 REP,定义在 RFC 9309 里[1][3]。

它的适用范围有明确边界。robots.txt 必须放在网站的顶级目录[3]。而且,这套约定只对文件所在的主机、协议和端口号有效[3]。也就是说,放错位置的文件等于不存在,Google 会直接忽略子目录里的 robots.txt[3]。

还有一点,这套约定并不覆盖所有抓取工具。由用户控制的抓取,以及用于安全检查的抓取,不在适用范围里[3]。

支持的字段

一行有效的规则由字段、冒号和值组成[3]。比如 User-agent: Googlebot 和 Disallow: /search 这两行,每行都是字段加冒号加值。

Google 支持的字段只有四个[3]:

  • user-agent
  • allow
  • disallow
  • sitemap

Google 不支持 crawl-delay 等其他字段[3]。

字段名不区分大小写,但路径值区分大小写[3]。allow 和 disallow 也叫规则,如果没写路径,Google 会忽略这条规则[3]。

路径匹配

路径是相对于网站根目录的[3]。

路径以斜杠开头表示根目录,匹配时区分大小写[3]。除了原始字符,路径也支持百分号编码的写法,两者视为同一件事[3]。

通配符只有两个[3]。

通配符 含义
星号 表示任意字符出现零次或多次
美元符号 表示网址结束

此外,Google 会忽略结尾的星号,等同于没有它[3]。

规则的优先顺序

当多条规则都指向同一个网址时,要看优先顺序来决定[3]。

基本规则是比较路径长度,取更具体的那一条[3]。也就是说,写得更细的规则会盖过写得笼统的规则。

以机床产品的目录页为例,两条规则同时命中同一个网址,路径更长的那条生效:

user-agent: *
disallow: /products/
allow: /products/cnc-lathe

如果两条规则的路径长度相同、又互相冲突,Google 会选限制最弱的那一条[3]。这一点值得留意:在这种情况下,放行会胜过拦截。

状态代码与缓存

读取 robots.txt 时,服务器的响应状态也会影响这份文件的效力[2][3]。

如果返回 4xx,Google 会认为网站没有有效的 robots.txt,也就没有任何抓取限制[3]。这一点很关键:本想屏蔽,结果因为文件取不到,反而等于全部放行。

如果返回 5xx,处理分几个阶段。最初 Google 会暂停抓取,同时继续尝试获取文件;接下来一段时间,它会改用上一个正常版本[3]。如果错误长期无法恢复,Google 要么按没有该文件处理,要么停止抓取,具体取决于网站能不能被全面抓取[3]。

另外,Google 通常会把该文件缓存最多 24 小时,因此改动不会立刻生效[3]。

附录

参见

参考资料

官方(境外)

  1. 《RFC 9309: Robots Exclusion Protocol》,RFC 编辑部。
  2. 《Using robots.txt》,Yandex 网站管理员。
  3. 《Google 如何解读 robots.txt 规范》,Google 搜索中心。

外部链接

无。