robots.txt 是站点上最容易被忽略、又最容易出事的文件之一。它通常只有几百字节,平时没人看;一旦写错,可能让整站或某个栏目长期抓不到。它同时也是排查问题时最该先看的地方——很多「页面好像没被处理」的疑问,答案就藏在这几行里。
先确认这个文件本身能打开
规则写得再对,如果文件取不到也等于没有。用不带任何参数的地址直接访问,检查返回的是正常文本,而不是 404、403,或者被跳转到首页。
- 确认服务器没有把它当成动态页面处理,出现登录校验、缓存层拦截等情况。
- 确认文件编码为 UTF-8,没有多余的 BOM 或乱码,避免规则被误读。
- 确认地址就是 https://你的域名/robots.txt,而不是放在子目录里。
三类常见的误伤写法
- 整站屏蔽:Disallow: / 多出现在测试环境的配置被同步到正式环境,改完忘了删。
- 通配符过度匹配:为了挡掉搜索参数结果页,直接写一条覆盖所有带问号的规则,结果把正规的栏目页、详情页一起挡掉。
- 挡住了不该挡的目录:图片、样式、脚本目录如果被屏蔽,蜘蛛可能无法完整渲染页面,看到的是一份残缺内容。
另外注意大小写和结尾斜杠的差异。有些实现里 /News/ 和 /news/ 并不等价,写之前最好按线上实际的 URL 形态来对照。
一份可以照做的自查步骤
- 列出确实希望屏蔽的目录:后台入口、搜索参数结果页、重复的筛选组合、测试目录、临时文件目录。
- 逐条对照线上真实 URL,确认没有把内容页、栏目页、图片目录写进去。
- 检查 Sitemap 声明那一行,指向的地址是否可访问,且地图本身没有被屏蔽。
- 检查是否存在 Allow 与 Disallow 互相冲突的规则,确认匹配顺序符合预期。
- 用几条被屏蔽和未屏蔽的地址实际请求一次,看返回结果是否和你的预期一致。
它和 meta robots、X-Robots-Tag 的分工
robots.txt 管的是「能不能来抓」,meta robots 标签和 HTTP 头的 X-Robots-Tag 管的是「抓到了要不要放进索引」。两者不能互相替代,混用还容易出问题。
特别要记住一点:被 robots.txt 屏蔽的地址,蜘蛛拿不到页面内容,自然也看不到页面里的 noindex。如果目的是让某个页面彻底退出索引,应该用 noindex;如果只是不想让它占用抓取资源,用 Disallow 更合适。
robots.txt 的修改不会立刻生效,不同蜘蛛的读取频率不一样。改完先观察一段时间再判断效果,别急着反复调整。
改动前后的记录与验证
建议把每次改动写进运维日志:改了什么、为什么改、谁改的、什么时候改的。看起来琐碎,但下次出问题时能省下大量排查时间。
- 改之前先备份一份原文件,确认有问题可以立即回滚。
- 改完之后用几个关键地址实测,不要只看文件内容对不对。
- 过一周回头看服务器日志,确认这些目录的抓取请求有没有按预期变化。
建议的巡检节奏
不需要天天盯,但可以固定几个触发点:每月做一次全量核对;站点改版、目录调整、上线新栏目之后立刻检查;收到抓取异常的告警时优先排查这一项。
robots.txt 不大,却决定了蜘蛛能看到什么。把它当成站点配置的一部分定期维护,比出了问题再回头找原因要省事得多。