站点运营

站点运营:robots.txt 的规则与排查,别把该抓的目录一起挡住

robots.txt 只控制抓取,不管索引与排名,但写错一行就可能把栏目入口一起挡掉。本文整理它的位置要求、语法要点、通配符的坑,以及上线前可以走的验证流程,并说明它和 sitemap、meta robots 之间的分工,帮你在收紧规则时少误伤。

站点运营

站点运营:robots.txt 的规则与排查,别把该抓的目录一起挡住

robots.txt 是放在站点根目录的纯文本文件,用来告诉搜索蜘蛛哪些路径不必抓取。它不控制索引,也不等于访问权限控制,但一旦写错,影响面往往很大:轻则让栏目页长期不被发现,重则把整站挡在门外。

先确认文件位置与可访问性

文件必须放在主机名根目录下,协议、主机名要与站点主域名一致。如果站点还存在 www 与非 www 两套可访问的地址,最好先做统一跳转,而不是两边各维护一份规则。

  • 放在子目录里无效,例如 example.com/blog/robots.txt 不会被当作规则文件。
  • 返回 404 等于告诉蜘蛛没有规则,但保留一份空文件更利于后续管理。
  • 返回 200 但内容其实是 HTML 错误页时,容易被当成规则解析,出现莫名其妙的拦截。

语法要点:User-agent、Disallow、Allow

一组记录从 User-agent 开始,后面跟若干条规则。User-agent: * 是兜底记录,要注意它和具体蜘蛛记录之间的取舍关系。空 Disallow 表示允许抓取,而 Disallow: / 表示全站禁止,这一行最容易误伤,改站点结构时尤其要留意。

通配符与结尾符号

  • * 匹配任意长度的字符序列,可用于批量指向某类路径。
  • $ 匹配地址结尾,例如只挡以 .pdf 结尾的地址。
  • 路径区分大小写,写 /Images/ 不会挡到 /images/。
  • 它不支持正则表达式,复杂的匹配条件写进去也不会按预期生效。

三条容易踩的线

一、用它挡筛选与排序参数

把参数页挡在抓取之外,可以减少无效消耗,但已经被抓取过的地址仍可能留在索引里。想让它退出索引,还需要配合页面上的 noindex 或返回 410,robots.txt 本身只负责停止抓取。

二、挡住 CSS 与 JS

样式和脚本被挡,蜘蛛渲染页面的能力会受影响,对依赖前端渲染的站点尤其明显。这类资源通常不建议拦。

三、误挡栏目与分页

把 /page/ 这类翻页路径整体挡掉,可能让列表页深处的条目失去一条发现通道。判断前先看这些内容是否还有栏目页、相关推荐、站点地图等其他入口。

排查与验证流程

  1. 在浏览器访问 域名/robots.txt,确认状态码为 200、返回类型是文本。
  2. 用搜索平台提供的测试工具,输入具体 URL,看命中了哪一条规则。
  3. 抽查重要栏目、详情页、资源目录,确认没有被误挡。
  4. 结合服务器日志,观察被挡目录是否还有抓取请求,用真实数据判断规则是否生效。
  5. 每次修改留一条记录,注明时间、修改人和原因,方便回溯。

与 sitemap、meta robots 的分工

robots.txt 管的是抓取,sitemap 负责提供入口,meta robots 与 X-Robots-Tag 管的是索引与展示。三者层次不同,不能互相替代。想阻止索引却只写 Disallow,蜘蛛看不到页面上的 noindex,反而可能因为外链而进入索引。

改动前先在测试环境验证匹配结果;涉及全站规则时,建议先放行、再收紧,避免一次性大范围拦截。

维护习惯

把 robots.txt 纳入版本管理与上线检查清单,改版、迁移、上线新栏目时各检查一次。文件本身不需要频繁改动,动得越少,越不容易出问题。

写 robots.txt 的目标不是挡得越多越安全,而是让抓取预算花在有用的页面上。每次改动都想清楚一件事:这条规则挡住的是低质地址,还是会把栏目入口一并挡掉。