站点运营

站点运营:robots.txt 自查,别让抓取规则误伤正常地址

robots.txt 常常一次写好就长期无人问津,但改版、换域名、新增目录之后,旧规则可能挡住正常地址,也可能放开不该抓的路径。本文给出一份可执行的自查清单,从文件可访问性、规则匹配优先级、资源目录放行、Sitemap 指令到日志验证,帮你把抓取入口理清楚。

站点运营

站点运营:robots.txt 自查,别让抓取规则误伤正常地址

robots.txt 是蜘蛛访问站点时最先读到的文件之一。它不决定页面能不能被收录,但直接决定蜘蛛能不能来抓。很多站点把它当成一次性配置,写完就不再看,结果改版、换域名、新增目录之后,规则和现状对不上,问题往往在流量下滑时才被发现。

先弄清一个容易被忽略的前提

robots.txt 只约束抓取,不约束收录。被 Disallow 的地址如果还有外部链接指向,仍可能出现在结果里,只是蜘蛛拿不到内容,摘要常常是空的。所以把“不想被收录”的期望完全寄托在 Disallow 上,通常会落空,这类需求应该交给页面级的 noindex,并且要允许蜘蛛抓取该页面才能读到这条指令。

常见问题清单

  • 从测试环境复制过来的 Disallow: / 忘了删,整站被挡在门外。
  • 误封 CSS、JS、字体或图片目录,蜘蛛拿到的是没有样式的空壳,渲染结果和用户看到的对不上。
  • 通配符用得过头,例如 Disallow: /*? 把带参数的正常栏目页也一起挡住。
  • Allow 与 Disallow 同时存在,却按书写顺序理解优先级。实际是按匹配长度决定,规则越长越优先,写法不同结果可能完全相反。
  • Sitemap 指令里的地址打不开,或者写的是内网地址、旧域名。
  • 同一份文件里混着 http 与 https、带 www 与不带 www 的写法。
  • 把 noindex、clean-param 之类的指令写进 robots.txt,以为能生效。

自查步骤

  1. 直接访问域名根目录下的 /robots.txt,确认返回 200,内容是纯文本,没有跳转或登录拦截。
  2. 把 Disallow 里的每一条路径,和服务器上真实存在的目录对一遍,删掉已经不存在的旧路径。
  3. 重点检查资源放行:CSS、JS、字体、图片这些目录必须可抓,否则依赖渲染的页面容易出问题。
  4. 核对 Sitemap 指令的地址,能正常打开,且与当前域名的协议、主域写法保持一致。
  5. 用抓取日志观察被拦截的请求,看看有没有本应被抓的栏目页出现在拦截记录里。
  6. 修改前先备份,改完在测试域名上验证,确认无误再同步到线上。

规则写法上的几个细节

路径区分大小写,/Images/ 和 /images/ 不是一回事。规则支持通配符 * 和结束符 $,但不同蜘蛛的支持程度有差异,能用明确路径就别用宽泛通配。存在多个 User-agent 分组时,蜘蛛只取与自己匹配的那一组,不要指望某条规则对所有蜘蛛都生效。

不要用 robots.txt 做临时开关。需要紧急下架时,更稳妥的顺序是先把页面状态明确下来,再调整规则,否则蜘蛛看不到清晰信号,只能反复试探同一批地址。

改动的节奏

每次调整规则后,要给蜘蛛留出重新读取 robots.txt 的时间,改动不会立刻生效。变动较大时可以分步执行:先放开被误封的目录,观察日志中相关地址的抓取恢复情况,再去处理其他规则。频繁来回改动,会让状态很难判断,也不利于排查。

把 robots.txt 和站点结构、Sitemap、抓取日志放在一起定期核对,是成本很低的一件事。规则写得清楚,抓取预算才能用在真正需要被发现的内容上。