先弄清楚 robots.txt 在管什么
robots.txt 放在域名根目录,是爬虫访问站点时较早读取的文件之一。它不保证页面一定不被收录,但能表达“哪些目录不希望被抓取”的意图。很多站点出问题,不是因为没有这个文件,而是里面躺着一条早已被遗忘、却一直在生效的规则。
几个高频排查项
1. 是否出现过 Disallow: /
这是最常见的事故来源。测试阶段为了“先别被收录”,在根目录写了全站屏蔽,上线后忘了删。结果就是蜘蛛来了、读了规则、离开了,页面在搜索结果里长期没有动静。检查时直接在文件中搜索这一条,出现就说明有问题。
2. 规则路径是否写对
robots.txt 的路径匹配从域名根开始。想屏蔽 /search/ 却写成 search/,或者填了带域名和协议的完整地址,通常都不会按预期生效。另外要注意 Disallow 是前缀匹配,写 /admin 会把 /administrator-guide 这类页面一起挡住。
3. 是否挡住了 CSS、JS 和图片目录
搜索引擎需要渲染页面来判断内容质量。如果为了“省抓取”把 /static/、/assets/、/js/ 整体屏蔽,渲染结果可能是一片空白,反而影响判断。除非确实存在大量重复资源,否则不建议整体屏蔽静态资源目录。
4. 测试环境的规则有没有带上线
预发布、灰度环境的 robots.txt 往往写着全站 Disallow。如果部署流程是把整套文件同步到生产环境,这条规则就会跟着一起上线,而且很难第一时间被发现。
5. 多条规则是否互相冲突
站点由不同人维护时,robots.txt 里容易出现重复的 User-agent 段落,同一个目录一会儿 Allow、一会儿 Disallow。不同爬虫对冲突条目的处理并不完全一致,建议保持一份简洁、清晰的规则。
6. Sitemap 声明指向哪里
可以在 robots.txt 中声明 Sitemap 地址。要确认这个地址能正常打开、返回的是 XML,并且里面列的是当前可访问的地址,而不是改版前遗留下来的老域名或旧路径。
一份可以照着过的检查清单
- 用浏览器直接访问 /robots.txt,确认返回 200,而不是 404 或跳转。
- 全文搜索 Disallow: /,确认没有全站屏蔽的残留。
- 逐条对照目录清单,检查路径是否写错、是否存在拼写问题。
- 确认没有屏蔽 CSS、JS、图片等渲染必需资源。
- 确认 Allow 与 Disallow 之间没有互相打架的条目。
- 确认 Sitemap 声明的地址可访问,内容与当前站点一致。
- 用搜索平台提供的抓取测试工具,验证几条关键 URL 的判定结果。
几个容易踩的坑
把 robots.txt 当成隐私工具。它只是一份约定,并不能阻止任何人直接访问。真正的私密内容应当依靠权限控制,而不是靠一条 Disallow。
用它来“清理”已经收录的页面。被屏蔽的地址如果此前已经被收录,通常仍会留在索引里。想让页面退出索引,应改用 noindex 或返回合适的状态码。
robots.txt 更像一份门牌说明,而不是一把锁。把它写清楚,蜘蛛才知道哪些门该进、哪些不必进。
建议把它纳入上线检查项:改版、迁站、调整目录结构时都顺手过一遍。文件只有几十行,但改动一次的影响范围往往覆盖全站。