robots.txt 通常是蜘蛛进入站点后最先读取的文件之一。它本身不复杂,但一旦写错,影响面往往很大:轻则让某些资源抓不到,重则让整站目录被挡在门外。很多站点在改版、换域名、上测试环境时顺手改过这个文件,过后却忘了恢复,问题就藏在这里。
先确认 robots.txt 本身能被正常读取
检查规则之前,先确认文件本身没有问题。常见的错误是路径放错、返回了 HTML 页面,或者被重定向到首页,导致蜘蛛根本读不到规则。
- 地址应为 https://example.com/robots.txt,不要放在子目录里;
- 返回状态码 200,内容类型为 text/plain;
- 不要返回 HTML 页面,也不要跳转到无关地址;
- 文件保持精简,规则按需添加,不要堆成一大段。
不要顺手屏蔽 CSS 与 JS
有些站点为了省抓取预算,在 robots.txt 里屏蔽 /css/、/js/、/assets/ 等目录。蜘蛛抓取这些资源是为了渲染页面,屏蔽之后可能只看到残缺的页面结构,图片位置、文字内容和链接都可能判断错误。除非你确定页面不依赖这些资源,否则不建议屏蔽。
Disallow 与 noindex 不要叠加使用
想彻底不让某个 URL 出现在搜索结果里,常见做法是加 noindex。但如果这个 URL 同时被 robots.txt 屏蔽,蜘蛛就读不到 noindex 标签,反而可能在没有摘要的情况下被收录。两者的关系是:robots.txt 管“能不能抓”,noindex 管“能不能索引”。要先让蜘蛛能抓到,才能看到 noindex。
如果页面确实不该被抓取,也不该出现在搜索结果里,更稳妥的方式是先允许抓取、加 noindex,等确认索引移除后再考虑屏蔽。
通配符与路径写法容易踩坑
路径匹配是 robots.txt 里最容易写错的部分,几个常见问题值得逐条核对:
- 写成 /admin 会同时匹配 /admin、/admin/ 和 /administrator,范围可能超出预期;
- 用 $ 结尾可以精确匹配,例如 /search$ 只挡 /search;
- Allow 与 Disallow 同时命中时,一般以更具体、更长的规则为准,不要只靠直觉判断;
- 通配符 * 要谨慎使用,避免一条规则误伤大半个目录。
测试环境、后台与搜索页要单独处理
开发站、预发布站如果沿用了线上域名又没有访问限制,容易被蜘蛛抓到重复内容。后台、搜索结果页、用户中心这类页面通常也不需要收录。与其在 robots.txt 里写一堆规则,不如结合访问密码、独立的 robots meta 或服务器层面的限制,把“不能抓”和“不该收录”分开处理。
上线前的 robots.txt 自查清单
- 确认线上 robots.txt 不含测试环境遗留的规则;
- 确认没有误封 CSS、JS、图片目录;
- 确认没有用 Disallow 屏蔽需要 noindex 的页面;
- 检查通配符和 $ 结尾是否符合预期路径;
- 检查是否屏蔽了搜索页、分页、筛选参数等低价值地址;
- 确认 Sitemap 地址写在文件里且可正常访问;
- 用抓取测试工具或不同 UA 验证规则生效情况。
用抓取日志验证,而不是只看文件
改完 robots.txt 后,建议观察一段时间的抓取日志,看看蜘蛛是否还在请求被屏蔽的目录,或者重要目录的抓取量是否明显下降。如果发现异常,及时回滚。站点运营中,这类基础文件不需要频繁改动,但每次改动都值得记录时间和原因,方便日后排查。
robots.txt 的价值在于放行正确的、拦住不需要的。定期花几分钟复查一遍,比等到抓取出问题再补救要轻松得多。