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-agentallowdisallowsitemap
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]。
附录
参见
参考资料
官方(境外)
- 《RFC 9309: Robots Exclusion Protocol》,RFC 编辑部。
- 《Using robots.txt》,Yandex 网站管理员。
- 《Google 如何解读 robots.txt 规范》,Google 搜索中心。
外部链接
无。