站点运营

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

robots.txt 看似简单,却常因整站屏蔽、分组错位或路径匹配偏差影响抓取。本文整理一份可执行的核查流程,覆盖规则分组、路径匹配、与 meta robots 及 sitemap 的配合,并说明改动后如何结合日志观察蜘蛛回访情况。

站点运营

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

robots.txt 是站点与搜索蜘蛛之间的第一道约定。它本身不复杂,但正因为它简单,很多站点上线之后就很少再回头看。等到发现收录异常、栏目迟迟不被抓取时,往往已经过去几周。把 robots.txt 当成需要定期复核的配置文件,比出问题后再排查要省事得多。

为什么 robots.txt 值得单独自查

抓取预算有限,蜘蛛进入一个站点后的第一步通常就是读取 robots.txt。如果这里写错了,后面的 sitemap、内链布局、内容更新节奏都很难发挥作用。常见的错误并不隐蔽,只是平时没人对着线上文件逐行读一遍:

  • Disallow 写成整站屏蔽:一行 Disallow: / 可能来自测试环境的复制粘贴,上线时忘了删。
  • 分组写错:User-agent 行与规则之间被空行或注释打断,导致规则归属到别的分组。
  • 路径匹配理解偏差:前缀匹配、结尾通配符和中间通配符的写法不同,屏蔽范围差别很大。
  • 大小写与编码问题:URL 路径大小写敏感,规则里写错一个字母就可能漏掉或误伤。

自查时重点看哪几项

1. 整体是否存在整站屏蔽

先确认没有任何一条规则把根路径全部挡住。测试环境的默认配置、框架自带的模板,都可能悄悄带进这一条。抓取测试工具能给出结果,但更可靠的做法是自己读取线上返回的内容,而不是看本地文件。

2. 关键目录是否被误伤

列表页、标签页、站内搜索页通常需要限制,但文章目录、栏目目录、静态资源目录不该被一起挡掉。检查每一条 Disallow 是否精确指向想限制的路径,而不是它的上级目录。一个常见的失误是限制 /tag/ 路径,却忘了站内搜索入口也用同一个前缀。

3. 是否与页面级指令冲突

robots.txt 只管抓取,不管索引;页面里的 noindex 才管索引。如果某类页面在 robots.txt 里被禁止抓取,同时又靠 meta robots 要求不索引,蜘蛛看不到 noindex,页面仍可能以 URL 形式出现在结果里。两者应当配合,而不是互相抵消。

4. sitemap 地址是否可用

robots.txt 里的 Sitemap 行是发现入口之一,写错路径等于少了一条通道。确认地址可访问、返回内容正常,并且指向当前主域,不要混用不同协议或带 www 与不带 www 的版本。

一轮完整的核查流程

  1. 访问线上 robots.txt,确认返回状态正常且内容是纯文本。
  2. 逐行核对 User-agent 与规则分组,删掉过期条目。
  3. 用抓取测试工具模拟蜘蛛访问首页、栏目页和一篇内容页。
  4. 检查关键页面是否被允许抓取,被限制的页面是否符合预期。
  5. 确认 Sitemap 地址有效,并与实际提交的地址一致。
  6. 改动后观察服务器日志,看蜘蛛对原先被挡路径的请求是否恢复。

改完之后的观察

robots.txt 的生效不是即时的。蜘蛛会缓存这份文件一段时间,尤其是原先屏蔽较久、抓取频次已经降低的站点。改动后不必立刻下结论,给一到两周观察期,结合日志里蜘蛛对关键路径的访问次数和状态码分布来判断。

如果只是放宽限制,通常较快能看到请求增加;如果是新增加限制,已经抓取过的页面不会自动消失。这时候需要配合页面级指令或内容调整,而不是指望一份文件解决全部问题。

把 robots.txt 当配置文件管理:改动留记录,上线前复核一遍,别让它成为没人负责的角落文件。