robots.txt 是放在站点根目录的一个纯文本文件,用来告诉爬虫哪些路径不希望被抓取。它看起来简单,但一次改错就可能让整站从搜索结果里慢慢消失,而且恢复周期不短。把它当成上线前必查的一项配置,成本很低。
先确认文件能被正常访问
爬虫只会读取根目录下的 /robots.txt,放在子目录里或者带参数的地址都不算数。自查的第一步很简单:用浏览器直接访问,确认返回 200,内容是纯文本,没有混进 HTML 标签,也没有被 CDN 或安全策略拦成 403。如果返回 404,等于告诉爬虫“没有限制”,通常不算坏事,但如果之后想恢复限制,别忘了先把文件放回去。
最容易出事的几条规则
- 全站屏蔽:Disallow: / 这一条会把整站挡在门外。测试环境上线、临时维护之后忘记删掉,是常见的事故来源。
- 路径写错:路径区分大小写,/News/ 和 /news/ 是两条不同的路径。少写一个斜杠、把 / 写成 /*,实际效果可能完全不一样。
- 顺手屏蔽静态资源:把 /css/、/js/、/images/ 一起挡掉,爬虫渲染页面时拿不到样式和脚本,对理解页面没有帮助。
- 规则互相覆盖:同一目录出现多条 Allow 与 Disallow 时,实际生效的往往是路径最长的那条,先后顺序不一定决定结果。
robots.txt 不等于 noindex
想隐藏一个页面时,很多人的第一反应是写进 robots.txt,但要分清两者的作用:robots.txt 决定“能不能抓”,noindex 决定“能不能收录”。如果一个页面既被 Disallow 又带 noindex,爬虫根本抓不到页面,自然也看不到 noindex 标签,结果往往变得难以预期。
如果目标是让页面不出现在搜索结果里,通常的做法是先允许抓取,再在页面上加 noindex;robots.txt 更适合用来节省抓取资源,挡住后台、参数页这类不需要抓取的地址。
自查时建议走的几步
- 确认文件位置、状态码和内容格式都正常。
- 逐条读一遍 Disallow 与 Allow,看有没有能匹配到全站的规则。
- 用不同 UA 测试关键路径,确认重要页面没有被意外拦住。
- 检查是否声明了 Sitemap 地址,且该地址可以正常访问。
- 修改前先备份,修改后观察服务器日志里爬虫的抓取量和状态码变化。
改完不要只看文件本身
robots.txt 的改动不会立刻在所有爬虫上生效,各家的缓存时间不一样,所以改完当天看不到变化是正常的。重点看接下来一到两周的日志:目标页面的抓取频次是否恢复,状态码是否从 403 变成 200。如果同时在用蜘蛛池或主动推送加快 URL 发现,也建议把被屏蔽的路径排除在外,避免把抓取机会送给一个爬虫根本不会访问的地址。
把这一步加进上线检查清单,能避开一类恢复起来很慢的问题。