robots.txt 测试

把线上那份 robots.txt 原样粘进来,再列几条路径,看看搜索引擎到底会不会抓,以及是哪一行规则起了作用。

只做本地解析,不会去访问任何网站。注释、大小写、多余空格都会被正常处理。

规则到底怎么判

同一分组里同时有多条规则命中时,取规则内容最长的那一条,长度相同时 Allow 优先。注意比的是「规则字符串的长度」,不是路径的长度:Disallow: /*.pdf$ 只有 7 个字符,而 Allow: /public/ 有 8 个字符,所以 /public/a.pdf 是允许抓取的。这条最容易被搞反,勾出「命中的规则明细」就能看到每条的长度。

路径匹配是把规则当模式,* 匹配任意长度的任意字符(包括斜杠,也可以匹配空串),$ 表示必须匹配到路径结尾。不带 $ 的规则是前缀匹配,所以 Disallow: /admin 会同时挡住 /admin/index.html 和 /admin-list。匹配范围包含查询串,/search?q=x 和 /search 是两条不同的路径。

Crawl-delay 告诉爬虫两次抓取之间至少隔多少秒,它不属于 RFC 9309,只是各家早期的约定,Google 明确不支持,Bing 会参考。想控制抓取速度,正规做法是用 Search Console 一类的站长工具设置抓取速率,或者在服务端做限流。Sitemap 指令是全局的,可以写在文件任何位置,不属于任何 User-agent 分组,它的作用是告诉爬虫站点地图在哪,不影响是否抓取。

最常见的几个配置错误:把 Disallow 写成一行空值以为能禁止全部(其实 Disallow: 空值表示不禁止任何路径,要禁止全部应该写 Disallow: /);在 User-agent 之前写 Allow / Disallow(这些行会被忽略);用 Disallow: / 又把整个站禁掉,然后发现收录全掉了;以及改了 robots.txt 却没意识到搜索引擎缓存的是几天前的版本。另外 robots.txt 只是「君子协定」,恶意爬虫根本不会看,防爬还是得靠限流、鉴权这类手段。

想快速确认线上是不是真的生效,可以在浏览器里直接打开 https://你的域名/robots.txt 看内容和缓存,再配合搜索引擎的抓取测试工具验证具体 URL。本页的校验只代表「按这份文本和 RFC 的规则应该这么判」,和搜索引擎内部的实际行为可能有细微差别。