站点运营

站点运营:robots.txt 的自查与维护,一次误封可能挡住整站抓取

robots.txt 放在根目录、改动即时生效,却没有预览和提醒,因此很容易留下事故。本文整理常见的误封写法,说明 Disallow 与 noindex 的分工,并给出一份上线前后可执行的自查与日志观察方法。

站点运营

站点运营:robots.txt 的自查与维护,一次误封可能挡住整站抓取

为什么 robots.txt 值得单独盯一眼

robots.txt 是放在站点根目录的一个纯文本文件,作用范围是整站。它不走内容发布流程,改一行、保存、上传,蜘蛛下次来访问时就会按新规则执行。正因为生效快、门槛低,它常常成为临时测试留下的现场:有人为了屏蔽测试目录,把 Disallow: / 写进了正式环境;有人复制模板时忘了改地址,规则里引用的是另一个站点。

更麻烦的是,robots.txt 没有预览功能,写错了也不会有人提醒你。所以比较实际的做法,是把它当成一项配置来管理:改动有记录,上线前有验证,上线后有观察。

几种常见的误封写法

  • Disallow: / 屏蔽全站,本意是临时下线或阻止测试抓取,之后忘记删除。
  • 误伤目录前缀。例如写 Disallow: /news,本想拦 /news-test,结果把 /newsletter、/news/2024 一并挡掉。
  • 规则文件放错位置,比如放在 www 站点下,而实际访问的域名不带 www。
  • 用 Disallow 去处理本该删除或改版的页面,页面抓不到,旧记录却可能长期留在索引里。
  • 路径大小写、编码与真实 URL 对不上,看似写了规则,实际要么没生效,要么超出预期地生效。

Disallow 和 noindex 不是一回事

这两个工具经常被混用,结果往往是两头落空。Disallow 表达的是“别来抓”,蜘蛛看不到页面内容,自然也读不到页面里的 noindex。如果这个 URL 被别处链接过,搜索引擎仍可能只凭外链信息生成一条记录。

想让页面从索引里退出,主路径是让它可以被抓取,并返回 404 或 410,或者允许抓取后用 noindex 明确表态。robots.txt 更适合用来阻止抓取行为本身,而不是当作内容下线开关。

所以当既不想被频繁抓取、又不想页面长期留着时,需要先判断优先级:先让它被正常访问并读到状态,再逐步调整访问频率。

上线前的自查清单

  1. 确认文件可访问:浏览器打开“站点域名/robots.txt”,状态码应为 200,返回纯文本,而不是站点的错误页。
  2. 确认协议与主域:规则里声明的站点地图地址,要与实际使用的 http/https、主域写法一致。
  3. 逐条读 Disallow 路径:每一条都要能说清挡了什么、为什么挡,说不清的先不加。
  4. 检查通配符与结尾符:* 匹配任意字符,$ 匹配结尾,滥用会让范围过大或过小。
  5. 检查是否声明了 Sitemap,方便蜘蛛顺路发现入口。
  6. 测试环境与生产环境的规则文件分开维护,不要共用同一份。
  7. 改动留记录:谁改的、改了什么、为什么改、什么时候开始生效。

上线后的观察方式

改完并不算结束。可以从服务器日志里筛出对 /robots.txt 的请求,看状态码是否稳定在 200。出现 404,说明文件缺失;出现 5xx,说明服务器处理这个文件时出了问题。这两种情况都可能让蜘蛛在一段时间内按更保守的方式对待整站。

同时留意被抓取 URL 的分布。原本每天都有稳定抓取的栏目,如果某天开始降到接近于零,不一定是内容出了问题,先回头确认规则文件里有没有把这条路径挡上。反过来,如果日志里频繁出现本该被挡掉的地址,也要检查规则里的路径写法是否与实际 URL 对得上,尤其是带参数或大小写不一致的地址。

把它纳入常规巡检

建议把 robots.txt 与其他基础项放在一起,按月或按版本节点过一遍:文件能否访问、规则有没有新增、站点地图是否有效、日志中的状态码是否正常。规则越少越容易读懂,能用页面状态码和 meta 标签解决的事,就尽量不写进规则文件里。