robots.txt 是站点里最容易被忽略的文件之一。它通常安静地躺在根目录,几个月没人打开,改一次也许只要几分钟,但写错一行,影响范围常常覆盖全站。正因为不常被看到,它更需要被定期拿出来对照检查。
先弄清它管什么,不管什么
机器人协议不是强制标准,主流搜索引擎会遵守,但并非所有抓取者都会照办。更关键的一点是:Disallow 只表示“不要抓取”,不等于“不要收录”。如果某个页面需要保留在站内,却希望它不出现在搜索结果里,应该用 noindex,并保证该页面允许被抓取,否则标签根本读不到。用 Disallow 去处理这类需求,往往适得其反。
逐项检查常见写法
User-agent 分组是否写对
- 每组以 User-agent 开头,后面跟本组专属规则,组与组之间的规则不会互相继承。
- 组名大小写不敏感,但拼写必须准确,写错的组等于没有生效。
- 某一组只写了 Allow 却漏写 Disallow 时,要意识到默认状态是允许抓取。
Allow 与 Disallow 的优先级
同一条路径同时命中 Allow 和 Disallow 时,一般以更具体、也就是更长的规则为准;长度相同时,宽松的 Allow 通常优先。这条判断经常被凭印象误判,改完之后务必用工具实际验证一遍。
通配符与结束符
- * 匹配任意字符,$ 表示路径结尾,例如 /*.pdf$ 和 /*.pdf 覆盖的范围并不相同。
- 把 Disallow: / 写进某一组,等于对该组关闭整站,上线前要确认这行不是误留。
- 路径区分大小写,/Search/ 和 /search/ 可能是两个不同地址。
一套可执行的自检流程
- 用浏览器直接打开 /robots.txt,确认返回 200、内容是纯文本,而不是把 404 页面或首页 HTML 当内容返回。
- 逐行读一遍,重点看有没有整站拦截、有没有误伤资源目录(如 /assets/、/uploads/),有没有漏掉本该放行的路径。
- 确认 Sitemap 声明写的是完整地址,且与实际提交的地址一致。
- 使用搜索引擎官方提供的 robots.txt 测试工具,输入几个有代表性的 URL,看实际判定结果是允许还是拦截。
- 到服务器日志里抽查几个被拦目录,确认近期没有来自正常蜘蛛的大量被拒记录。
几个容易踩的坑
- 用 robots.txt 屏蔽后台、测试页或参数页,却忘了这些地址仍可能被外部引用,最后以无描述的形式出现在结果里。
- 站点搬到了子目录,文件里的路径却还是旧结构。
- Crawl-delay 只被部分搜索引擎支持,写很大的值会拖慢发现速度,一般不建议随意调整。
- 改完规则不做测试,等发现收录量下滑才回头排查。
把 robots.txt 当成一份“通行名单”来维护:明确哪些必须放行,哪些确实需要拦截,剩下的交给内容质量去决定。
结语
不需要频繁改动它,但建议每季度、以及每次站点结构调整之后检查一次,并留下一份历史版本。规则越少越清晰,出问题时也越容易定位。