站点运营

站点运营:robots.txt 规则自查,别让一条写错的规则挡住整站抓取

robots.txt 看起来只是一份简单的纯文本文件,写错一条规则却可能挡住整站抓取,而且恢复起来不轻松。本文整理了文件可访问性检查、常见误写规则、robots.txt 与 noindex 的区别,以及修改后的验证和日志观察步骤,适合放进上线前的检查清单。

站点运营

站点运营:robots.txt 规则自查,别让一条写错的规则挡住整站抓取

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 更适合用来节省抓取资源,挡住后台、参数页这类不需要抓取的地址。

自查时建议走的几步

  1. 确认文件位置、状态码和内容格式都正常。
  2. 逐条读一遍 Disallow 与 Allow,看有没有能匹配到全站的规则。
  3. 用不同 UA 测试关键路径,确认重要页面没有被意外拦住。
  4. 检查是否声明了 Sitemap 地址,且该地址可以正常访问。
  5. 修改前先备份,修改后观察服务器日志里爬虫的抓取量和状态码变化。

改完不要只看文件本身

robots.txt 的改动不会立刻在所有爬虫上生效,各家的缓存时间不一样,所以改完当天看不到变化是正常的。重点看接下来一到两周的日志:目标页面的抓取频次是否恢复,状态码是否从 403 变成 200。如果同时在用蜘蛛池或主动推送加快 URL 发现,也建议把被屏蔽的路径排除在外,避免把抓取机会送给一个爬虫根本不会访问的地址。

把这一步加进上线检查清单,能避开一类恢复起来很慢的问题。