robots.txt 是放在站点根目录下的一个纯文本文件,作用很简单:告诉爬虫哪些路径可以抓、哪些先不要抓。它不控制收录,也不能阻止页面被索引——真正的屏障是登录、密码或 noindex 标记。它的麻烦之处在于,写错之后页面不会报错、不会 404,只是可能在几周后慢慢从结果里淡出,等你发现时已经不好回溯原因。
为什么这个小文件容易出问题
多数站点在搭建初期配置一次 robots.txt,之后很少有人再回头翻。改版、换域名、迁移目录、开测试环境时,旧配置往往被顺手复制过去。规则一条条叠上去,几年后打开一看,既有已经不存在的目录,也有互相冲突的写法,没人说得清哪条还在起作用。
更现实的问题是:它太不起眼了。上线检查清单里通常会写标题、描述、canonical,却很少留一行给 robots.txt。
三类常见的误伤
Disallow 写得过宽
最常见的写法是 Disallow: /,本意是屏蔽某个目录,结果把整站都挡住了。另一种是用通配符一口气排除某类文件,比如把 js、css 一并挡住,爬虫拿不到渲染所需的资源,对页面的理解就会打折扣,移动端适配问题也更容易被忽略。
测试环境规则带上线
测试站为了不被抓取,通常直接写一条禁止全站。正式上线时配置文件跟着一起搬过去,站点从此对蜘蛛关门。这类事故重复率很高,值得在上线清单里单独列一项,逐条对比线上与测试环境的差异。
Sitemap 声明写错或不更新
Sitemap 那一行必须是完整的绝对地址,并且指向真实可访问的 XML 文件。域名换过、目录调整过却没有同步,等于把爬虫引到一个打不开的地址上,既浪费抓取预算,也让人误以为站点没有提交入口。
一份可以照着走的自查清单
- 直接访问 你的域名/robots.txt,确认返回 200,类型是纯文本,而不是一个套着 HTML 的错误页。
- 逐行读一遍 User-agent 与 Disallow 的组合,问自己:这条会不会误伤首页、栏目页、列表页,以及页面依赖的样式和脚本。
- 确认没有残留的整站禁止规则,尤其是从测试环境带过来的那种。
- 检查 Sitemap 行是否为绝对地址、能否在浏览器里正常打开。
- 清理指向已下线目录、旧域名、旧参数的规则,避免文件越读越乱。
- 确认后台、备份文件、日志目录确实被挡在外面,而不是靠路径没人知道。
- 把线上文件和版本库里的副本对一遍,确认改动有记录、能回滚。
改完之后怎么验证
可以用搜索引擎官方提供的抓取测试工具,或者手工访问几个关键地址,确认能正常取到内容。改完不要指望马上生效,爬虫会缓存这个文件一段时间,抓取频率本身也有波动。看效果时看趋势,不要盯着单日数据下结论。
需要提醒的是:robots.txt 是抓取层面的约定,不是安全措施。真正敏感的内容,应该用权限、登录或服务端校验来保护,而不是指望一条禁止规则。
把它纳入例行检查
建议在几个固定节点上检查:站点改版、域名迁移、环境切换、目录结构调整。平时也可以每个季度打开读一遍,删掉失效规则。文件越短越清晰,越容易看懂,也越不容易在几年后变成没人敢动的一团乱麻。
另外,不要频繁修改。每次改动都会让爬虫重新判断你的规则意图,短期内的抓取表现可能更不稳定。想清楚要挡什么、为什么挡,一次改到位,比反复微调更省事。