站点运营

站点运营:robots.txt 与 meta robots 自查,别让一条规则挡住整站抓取

robots.txt 与 meta robots 是抓取控制的第一道关口,写错一行可能挡住整站,也可能让该下线的页面继续出现。本文梳理路径写法、通配符、渲染资源、Sitemap 声明等常见误区,并给出可照着执行的检查步骤与回滚思路。

站点运营

站点运营:robots.txt 与 meta robots 自查,别让一条规则挡住整站抓取

robots.txt 通常只有几行,写完就被遗忘在根目录。但它是蜘蛛进入站点前最先读到的文件之一,一条写错的规则,可能让整站或某个栏目长期没有抓取。这篇属于站点运营里的基础自查,重点是把“能抓什么、不能抓什么”这件事定期核对一遍。

先明确 robots.txt 的边界

把它的定位搞清楚,很多误用会自然消失。

  • 它是建议,不是防火墙。是否遵守取决于爬虫本身,恶意抓取也不会因为一行 Disallow 就停下。
  • 阻止抓取不等于阻止收录。被 Disallow 的 URL 仍可能因为外链被收录,只是缺少标题和摘要。
  • 它不适合用来保护隐私或隐藏内容,真正的权限控制要靠登录态和服务器配置。
  • 它也不能替代 noindex。要阻止收录,优先用 noindex,并且保证页面能被抓取到。

正文自查:常被写错的地方

1. 规则是否误伤整站

Disallow: / 会挡住全站。这条规则在测试站、临时维护页上很常见,一旦随模板或配置同步到正式环境,影响是直接的。自查时先确认这份文件属于哪个环境,再看它挡住了什么。

2. 路径写法

  • 路径区分大小写,/Images/ 和 /images/ 不是一回事。
  • 结尾漏写斜杠,可能匹配到不该挡的目录。
  • 通配符 * 与结尾的 $ 会放大匹配范围,加之前先确认影响面。
  • 多个 User-agent 段落并存时,确认目标爬虫落在哪一段,别把规则写进了别的段落。

3. 是否挡住了渲染资源

把 CSS、JS、图片目录一起挡掉,看起来省抓取,实际会让蜘蛛无法正确渲染页面,判断页面内容时容易出错。除非确有需要,通常建议放开这些静态资源。

4. Sitemap 声明

文件末尾的 Sitemap 行指向正确地址、可正常访问,是常规做法。地址写错或指向旧域名,等于白写。多语言、移动端声明也应对照实际配置检查。

5. meta robots 与 X-Robots-Tag 要一起看

HTML 里的 meta robots 和响应头里的 X-Robots-Tag 是两套独立设置,容易出现互相打架的情况。常见问题是:robots.txt 挡住了抓取,页面里又写着 noindex,结果 noindex 读不到,页面反而可能以空标题形式出现在结果里。要下线页面,就让页面可抓取 + noindex,等确认移除后再考虑屏蔽抓取。

一份可以照着走的检查步骤

  1. 直接访问站点根目录的 /robots.txt,确认返回正常状态,不是 404,也不是被前端路由接管的 HTML 页面。
  2. 用搜索引擎官方提供的 robots 测试工具,输入几个关键 URL,逐个看判定结果。
  3. 分别测试首页、栏目页、详情页、静态资源、后台路径,确认该放行的放行、该拦的拦住。
  4. 检查是否有子目录、测试域名、CDN 节点上残留的另一份 robots.txt。
  5. 确认文件能正常返回后,再顺手检查 Sitemap 地址是否与实际一致。
  6. 修改后在日志里观察一段时间抓取量变化,确认没有出现断崖式下跌。

改动与回滚

robots.txt 常被 CDN 或缓存层缓存,改完不生效时先想到刷新缓存,而不是反复改文件。另外建议把每次修改留档,改错时能立刻恢复上一版——这个文件改动量小,但影响面大,值得用对待配置文件的谨慎程度来处理。

一个习惯:任何涉及“阻止抓取”的改动,先在测试域名验证,再上线,上线后隔天回看一次抓取日志。

定期检查的节奏

不必频繁修改,但可以固定一个周期,比如每季度或每次大改版前后,把 robots.txt、meta robots、Sitemap 声明放在一起过一遍。规则稳定、边界清楚,蜘蛛的抓取才会更容易落在你真正希望被看到的页面上。