站点运营

站点运营:robots.txt 自查,别让几行规则挡住正常抓取

robots.txt 管的是抓取而不是收录,却常常成为抓取异常的原因。本文梳理规则写法上的常见检查点、容易踩的坑,以及改完之后的验证方式与维护节奏,帮助站点运营在调整屏蔽规则时少误伤正常页面和静态资源。

站点运营

站点运营:robots.txt 自查,别让几行规则挡住正常抓取

robots.txt 是放在站点根目录的一个纯文本文件,它不控制索引,只表达希望蜘蛛不要抓取哪些地址。正因为规则短、生效快、影响面大,它常常是站点运营里最容易误伤自己的一处配置。不少抓取异常,最后都能追到几行随手添加的 Disallow 上。

先想清楚:它管的是抓取,不是收录

很多同学把 robots.txt 当成下架开关,页面一出问题就 Disallow,以为这样就不会出现在搜索结果里。实际逻辑是:被禁止抓取的地址,搜索引擎拿不到内容,但已经收录的旧链接可能仍然保留,只是摘要和快照会逐渐过期。想处理页面级问题,应当用 noindex(页面可抓取时才生效)或直接删除并返回 404、410。

  • 不希望被抓取:写进 robots.txt
  • 不希望收录但允许抓取:用 meta robots 的 noindex
  • 内容已删除:返回 404 或 410,再同步更新站点地图

规则写法上的几个检查点

路径要写对前缀

Disallow 后面跟的是路径前缀,不是完整 URL。写 Disallow: /admin/ 才会匹配 /admin/ 下的所有地址;写完整域名不会生效,写成 Disallow: admin 也匹配不到以斜杠开头的路径。

通配符和结尾符别用混

  • * 匹配任意字符,适合处理带参数的地址,例如 /*?sort=
  • $ 匹配结尾,例如 /*.pdf$ 只针对以 .pdf 结尾的地址
  • 两者都属于非标准扩展,主流蜘蛛支持,但写法越简单越不容易出问题

User-agent 分组不要互相干扰

每个分组由一条或多条 User-agent 加若干规则组成,分组之间靠空行分隔。常见错误是给某个蜘蛛单独写规则时忘了空行,结果规则被归到上一组,或者与后面的 User-agent: * 产生理解上的偏差。建议把通用规则放在最后,特殊蜘蛛单独成组,并在组内加注释说明用途和添加时间。

别忘了声明站点地图

Sitemap 一行写在文件末尾,可以帮助蜘蛛更快发现新地址,但它只是线索,不代表会被收录。

最容易踩的几个坑

  • 全站 Disallow: / 之后忘记撤销,测试环境的规则被带到正式站
  • 屏蔽了 CSS、JS、图片目录,蜘蛛拿不到渲染所需资源,页面评估失真
  • 为屏蔽带参数的筛选地址,把正常列表页一起挡在门外
  • 为了临时下线一篇稿子,顺手把整个栏目路径写进 Disallow
  • 多套环境共用一份文件,测试规则误发到生产环境

改完之后怎么验证

  1. 用搜索引擎官方提供的 robots.txt 测试工具,输入具体 URL 看判定结果是否符合预期
  2. 在服务器日志里筛选蜘蛛请求记录,确认被禁止的目录确实不再被抓,需要抓的目录仍正常出现
  3. 观察搜索平台后台的抓取统计,看抓取量是否出现异常下滑
  4. 把改动记进运营日志,注明时间、修改人、原因,便于日后回滚排查
规则越少越安全。没想清楚为什么要加一条 Disallow 之前,先不要加。

维护节奏建议

robots.txt 不需要频繁调整。建议按季度,或者在大改版、上线新栏目、下线旧频道时复查一次,重点确认三件事:是否还有过期规则、是否误伤静态资源、Sitemap 地址是否仍指向有效文件。改动尽量选择流量较低的时段,改完留出几天观察日志,再决定下一步怎么调。