站点运营

站点运营:robots.txt 自查,别让一条规则挡住该抓的目录

robots.txt 是蜘蛛进入站点的第一道门,写错一条规则,可能让整站或某个栏目长期不被抓取。这篇文章从文件可访问性、通配符写法、与 noindex 的分工、Sitemap 声明几个角度给出自查清单,并说明改完后如何验证,避免规则悄悄生效却没人发现。

站点运营

站点运营:robots.txt 自查,别让一条规则挡住该抓的目录

多数搜索引擎蜘蛛在抓取一个站点之前,都会先去取一次 robots.txt。这个文件很小,改动也简单,正因为如此,很多人改完之后就不再回头看。等到抓取量下降、新页面迟迟不被发现,才回头翻日志,往往问题就出在那几行规则上。

第一步:确认 robots.txt 真的能被取到

先看这个文件本身是否正常:返回 200 状态码、内容类型接近 text/plain、正文只包含规则文本。常见的意外有这几种:站点的安全策略或 CDN 规则把 /robots.txt 也拦截了,返回登录页或用 302 跳到首页;协议改造后 HTTP 与 HTTPS 各留了一份内容不同的文件;根目录被重写规则覆盖,返回了一整页 HTML。

还要注意状态码的差别。如果 robots.txt 返回 5xx,主流搜索引擎倾向于把这当成临时故障,短期暂停对整站的抓取;如果返回 404,通常会被理解为没有任何限制,等同于允许抓取全部路径。也就是说,服务器故障和文件被删掉,会带来两种完全相反的结果。给这个地址加一个简单的可用性监控,比事后猜测要省事得多。

第二步:排查最容易误伤的几种写法

Disallow 是前缀匹配,多写一个字符、少写一个斜杠,影响范围就差很远。下面这些情况在巡检中出现频率最高:

  • 测试规则没删干净:上线前写的 Disallow 根目录规则忘了去掉,整站对外都是禁止抓取。
  • 目录边界没写清楚:想屏蔽后台目录,结果只写了前半段路径,把以相同字符串开头的正常栏目一起挡了。想精确匹配某个目录,注意补上结尾斜杠。
  • 通配符范围过大:用问号加通配符一条挡掉所有带参数的地址,会连带挡掉大量内容正常的页面。
  • 只禁不放开:用一个宽泛规则挡掉整块目录,又忘了对其中少数需要抓取的路径补 Allow。
  • 路径大小写:路径部分区分大小写,User-agent 名称不区分,别把两者混为一谈。
  • 分域遗漏:子域、独立域名各有自己的 robots.txt,主域规则不会自动生效。

第三步:别把 robots.txt 当成索引移除工具

这是最常见的一类误解。想让某个页面从搜索结果里消失,直接在 robots.txt 里禁掉它,结果往往相反:蜘蛛进不去页面,自然读不到页面上的 noindex 声明,URL 反而可能继续留在索引里,只是摘要信息变得很糟糕。

抓取控制和索引控制是两件事。想让页面退出索引,用 noindex 并保证页面可以被抓取;想减少无意义的抓取消耗,才用 robots.txt 屏蔽。两者混用,通常两头都做不好。

第四步:顺手检查 Sitemap 声明

在 robots.txt 里写 Sitemap,是让蜘蛛更快发现入口的低成本方式。检查两点:地址要写完整的绝对地址,带上协议和域名;站点地图本身要能正常访问,并且里面不要包含已被 robots.txt 屏蔽的地址,否则蜘蛛会反复遇到「给了地址却不让抓」的矛盾信号。测试环境、预发布环境则相反,用 robots.txt 全站禁抓,比依赖登录验证更省心。

第五步:改完之后怎么验证

  1. 用搜索引擎官方提供的 robots.txt 测试工具,输入具体 URL 看判定结果,重点测那几个边界路径。
  2. 用命令行或在线工具直接取一次文件,确认状态码和返回内容与本地版本一致。
  3. 检查一段时间的服务器日志,看 robots.txt 的请求状态码是否稳定,有没有出现 5xx。
  4. 观察被抓取 URL 的数量与分布变化,注意这是慢变量,改完当天看不到明显差别是正常的。

robots.txt 的问题有一个共同特征:生效时没有提示,出错时也没有报错。把它放进常规巡检清单,每隔一段时间对照实际目录结构再看一遍,比等到抓取量下滑时再去排查,代价小得多。