站点运营

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

robots.txt 只有几行文本,却可能决定蜘蛛能不能走进你的站点。本文梳理常见的误封写法、通配符与路径匹配的坑、Sitemap 声明位置,以及一份可执行的自查清单,帮你在改规则之前先确认影响范围。

站点运营

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

robots.txt 是放在站点根目录的一个纯文本文件,内容通常只有几行。正因为它看着简单,很多站点在改版、迁移或者临时屏蔽某个目录时顺手加一条 Disallow,过几个月就忘了,结果蜘蛛长期进不来,页面还在,流量却慢慢掉。

一个文件,影响的是整站抓取路径

搜索引擎蜘蛛在抓取之前,通常会先读取根目录的 robots.txt,判断哪些路径可以访问。被明确禁止的地址,一般不会被主动抓取;反过来,如果文件本身返回 404 或者内容乱码,蜘蛛多数会按「没有限制」处理,继续正常抓取。问题往往出在中间状态:文件能读,但规则写得太宽。

常见的误封写法

  • Disallow: / —— 整站屏蔽。做测试环境时常见,同步到线上就是灾难。
  • 屏蔽 CSS、JS 目录 —— 蜘蛛渲染页面时需要这些资源,屏蔽后可能把页面判成空白或不完整。
  • 屏蔽分页、筛选、站内搜索 —— 出发点是减少重复,但一刀切会连带挡掉真实的列表入口。
  • 屏蔽整个图片或附件目录 —— 图片搜索和页面内资源引用都会受影响。
  • 测试规则没删 —— 临时加的路径一直留在线上,没人记得。

写法上的几个细节

路径前缀与通配符

Disallow 后面的值按路径前缀匹配,不是完整 URL。写 Disallow: /admin 会同时挡住 /admin、/admin/、/administrator 这类以该字符串开头的地址。想精确一点,可以用 $ 表示结尾,用 * 表示任意字符。规则写得越短,覆盖范围越容易超出预期。

大小写与结尾斜杠

路径通常区分大小写,/Images 和 /images 可能被视为两条不同路径。结尾斜杠也别随手省略,目录和文件混在一起时容易误伤。

Sitemap 声明

可以在 robots.txt 里用 Sitemap 行指向站点地图地址,方便蜘蛛发现入口。这只是一种补充,不是必须,但写错了会指向已经不存在的文件,反而浪费一次请求。

Crawl-delay

部分蜘蛛支持这一项,用来降低访问频率。但主流搜索引擎对此支持有限,控制抓取速度更稳妥的办法还是看服务器日志和实际负载,而不是只写一行数字。

robots.txt 管不了的事

禁止抓取不等于禁止收录。一个被 Disallow 的页面仍然可能因为外部链接被索引,只是标题和摘要在搜索结果里可能显示不全。要真正让页面退出索引,应该用 noindex,并且要让蜘蛛能抓到那个页面、看到这个标记。

同样,robots.txt 也不是安全措施。它是一份公开说明,任何人都能读。把后台地址、接口路径写进去,等于把目录结构告诉别人。敏感入口应该靠登录校验和权限控制,而不是靠这一行文本。

一份可执行的自查清单

  1. 直接在浏览器打开 站点域名/robots.txt,确认状态码是 200,内容没有乱码。
  2. 通读每一行规则,问一句「这条还在生效吗」,删掉没有明确目的的条目。
  3. 列出被屏蔽的目录,逐个确认里面有没有对用户有价值的页面。
  4. 检查是否误封了静态资源目录和分页路径。
  5. 确认 Sitemap 行指向的地址可以正常访问。
  6. 用搜索引擎站长平台里的 robots 测试工具,输入几个关键 URL,看判定结果是否符合预期。
  7. 对比服务器日志里蜘蛛的访问路径,和规则预期是否一致。

修改前后的注意事项

改动 robots.txt 之前,先备份一份当前版本,并记录改动时间和原因。放宽限制后,抓取恢复需要时间,不会立刻见效;收紧限制则可能让已经收录的页面逐渐失去抓取入口。如果只是想让某类页面不被索引,优先考虑页面级的 noindex,而不是直接在 robots.txt 里一刀切。

最后一点:robots.txt 属于站点基础配置,改动频率应该很低。把它纳入改版和上线清单,和 URL 跳转、sitemap、证书一起检查,比事后排查要省事得多。