robots.txt 是搜索蜘蛛进入站点前最先读取的文件之一。它不控制页面能否被收录,但会直接影响蜘蛛愿不愿意继续往下爬。很多站点的问题不是出在内容质量,而是这个文件里留下一行过期的 Disallow,把整站或某个目录挡在门外,而运营者半年都没发现。
先确认它真的被读取了
在服务器访问日志里过滤 robots.txt 的请求记录,看两件事:一是频率,主流搜索引擎的蜘蛛会定期回来取;二是状态码,必须是 200,且返回的是纯文本内容。
- 返回 404:蜘蛛会按“无限制”处理,但也说明文件实际丢失,规则没有生效。
- 返回 403 或 5xx:不同蜘蛛的处理策略不一致,有的会暂停抓取,风险最大。
- 返回 HTML 错误页:文件内容被跳到首页或错误模板,规则等于不存在。
最常见的几种写法问题
Disallow 开得太宽
比如只想屏蔽后台,却写成更宽的路径匹配,或者干脆写 Disallow: /,把整站锁死。测试环境上线时留下的规则,是最容易被带到生产环境的。
忘记给必要目录开 Allow
规则匹配通常按最长路径优先。如果先把整个目录屏蔽,再想放开其中几个子目录,必须显式写 Allow,否则放开不生效,实际操作时会以为改了却没起效果。
通配符和结尾符号用错
* 表示任意字符,$ 表示结束。用 /search$ 只匹配到 search 结尾的地址,用 /search 则会连 /search-result 一起挡住。写成带参数形式的规则时,要确认没有误伤正常栏目。
多份规则互相冲突
不同人接手时各加一段,最后出现同一条路径既被屏蔽又被放开。规则越短越清晰,比层层叠加好维护,接手的人也能一眼看懂意图。
它和 URL 发现的关系
对被屏蔽的目录,蜘蛛不会抓取,也不会从里面发现新的链接。这会连带影响依赖这些页面输出的内链结构:一个新栏目如果挂在被屏蔽的路径下,它的文章可能长期不被发现。所以调整 robots.txt 前,先想清楚哪些路径承担着链接分发的角色,必要时把它们单独标注出来。
一份可以照做的自查清单
- 用浏览器直接访问 /robots.txt,确认内容与预期一致,状态码 200。
- 逐条规则核对:屏蔽的是路径还是具体文件,是否有更窄的写法。
- 检查是否误屏蔽 CSS、JS、图片目录,这些资源被挡会影响页面渲染判断。
- 确认 sitemap 地址写在文件里,且该地址可以直接访问。
- 检查测试、备份、临时目录是否已经屏蔽。
- 把改动记进变更记录,注明日期、修改人和原因。
改完之后做什么
修改后不要只看搜索引擎后台的提示就收工。可以抽查几条被放开的 URL,过几天再看日志里是否出现抓取记录。如果长时间没有任何抓取,再排查是否还有别的入口限制,比如服务器防火墙、CDN 规则或者站点自身的访问控制。
robots.txt 是一张门禁名单,不是内容质量评判工具。把它写清楚、改完记得回看,比反复调整规则更重要。