站点运营

站点运营:robots.txt 自查,别让规则把该抓的页面挡在外面

robots.txt 只有几行,出问题却往往很隐蔽。这篇自查从文件能否正常访问、规则是否误伤正常路径、CSS 与 JS 有没有被一起挡住、和 sitemap 的配合、测试环境与线上环境的差异几个角度展开,最后给出一份可以照着走一遍的检查清单。

站点运营

站点运营:robots.txt 自查,别让规则把该抓的页面挡在外面

robots.txt 是站点和搜索引擎爬虫之间最基础的一份约定文件。它放在根目录,被读取的频率很高,但真正被认真检查过的却不多。很多站点在上线时写了一份规则,之后几年都没再动过,栏目改了、路径换了、测试目录上线了,规则还是老样子。

这份自查不涉及复杂策略,只是把几个容易出问题的地方过一遍。

一、先确认文件本身能被读到

用浏览器直接访问 https://你的域名/robots.txt,看返回的是不是 200,内容是不是纯文本。常见的异常有几种:

  • 返回 404,说明文件没放对位置,或者被框架的路由规则拦截了;
  • 返回的是站点 404 页面的 HTML,爬虫读到的是一堆标签;
  • 被 CDN 或 WAF 拦截,自测能访问,爬虫的请求却被挡下;
  • 返回 301 跳到别的路径,不算致命,但没必要多绕这一圈。

如果确实不需要这份文件且打算放行全部抓取,返回 404 和放一个空的 200 文件效果接近,但显式放一个空文件更利于日后排查。

二、规则有没有误伤正常页面

Disallow 是禁止抓取,写错一个字符,可能整块栏目就消失了。重点看这几处:

1. 目录名写得过宽

比如写了 Disallow: /search,本意只想挡住站内搜索结果页,结果连 /search-tips/ 这类正常文章目录也一起被挡了。改成更精确的路径,会稳一些。

2. 通配符和结尾符号

* 匹配任意字符,$ 表示路径结束。Disallow: /*.pdf$Disallow: /*.pdf 的行为并不一样,前者只挡以 .pdf 结尾的地址。写之前最好把目标地址在脑子里过一遍。

3. 大小写与参数

路径匹配对大小写敏感。如果站点同时存在 /Help/help,只写一条可能漏掉另一个。带参数的动态地址也要留意,筛选、排序、分页参数往往需要单独处理。

三、别把 CSS、JS 和图片一起挡住

早年的做法是屏蔽静态资源目录,以减少抓取量。现在搜索引擎需要渲染页面,屏蔽 CSS 和 JS 会导致它看到的页面和用户看到的不一样,判断容易出偏差。除非有明确理由,建议放开这些目录,尤其是主样式和主脚本。

四、和 sitemap 要互相配合

可以在文件末尾用 Sitemap: 指向站点地图的完整地址,一行一个。注意两点:地址必须是绝对地址;别指向一个已经在 robots 里被 Disallow 的路径,那等于自己跟自己打架。

五、区分测试环境和线上环境

测试站、预发布站常常直接复制线上配置,或者反过来,把测试用的 Disallow: / 一起带上线。上线前花十秒看一眼这份文件,比事后排查收录异常省事得多。缓存也要清,有些站点的 robots.txt 被 CDN 缓存了很长的过期时间,改了等于没改。

robots.txt 只是抓取层面的约定,不是收录开关。它阻止抓取,不等于阻止收录;放开抓取,也不代表页面就会被收录。两件事不要混为一谈。

六、一次可执行的检查清单

  1. 直接访问 /robots.txt,确认状态码和内容类型;
  2. 把当前规则逐条对照线上真实路径,确认没有误伤;
  3. 抽查几个被挡的地址,在抓取工具里验证结果;
  4. 确认 CSS、JS、图片目录没有被整体屏蔽;
  5. 确认 Sitemap 地址有效,且未被自身规则屏蔽;
  6. 上线前对比测试环境与线上文件的差异;
  7. 改动后清一次 CDN 缓存,并记录改动时间和原因。

这份文件很短,改一次可能只要几分钟,但它影响的是爬虫对整个站点的第一印象。把它放进常规自查清单,比出问题后再回头找原因要轻松。