robots.txt 是放在站点根目录的一个纯文本文件,它不控制索引,只表达希望蜘蛛不要抓取哪些地址。正因为规则短、生效快、影响面大,它常常是站点运营里最容易误伤自己的一处配置。不少抓取异常,最后都能追到几行随手添加的 Disallow 上。
先想清楚:它管的是抓取,不是收录
很多同学把 robots.txt 当成下架开关,页面一出问题就 Disallow,以为这样就不会出现在搜索结果里。实际逻辑是:被禁止抓取的地址,搜索引擎拿不到内容,但已经收录的旧链接可能仍然保留,只是摘要和快照会逐渐过期。想处理页面级问题,应当用 noindex(页面可抓取时才生效)或直接删除并返回 404、410。
- 不希望被抓取:写进 robots.txt
- 不希望收录但允许抓取:用 meta robots 的 noindex
- 内容已删除:返回 404 或 410,再同步更新站点地图
规则写法上的几个检查点
路径要写对前缀
Disallow 后面跟的是路径前缀,不是完整 URL。写 Disallow: /admin/ 才会匹配 /admin/ 下的所有地址;写完整域名不会生效,写成 Disallow: admin 也匹配不到以斜杠开头的路径。
通配符和结尾符别用混
- * 匹配任意字符,适合处理带参数的地址,例如 /*?sort=
- $ 匹配结尾,例如 /*.pdf$ 只针对以 .pdf 结尾的地址
- 两者都属于非标准扩展,主流蜘蛛支持,但写法越简单越不容易出问题
User-agent 分组不要互相干扰
每个分组由一条或多条 User-agent 加若干规则组成,分组之间靠空行分隔。常见错误是给某个蜘蛛单独写规则时忘了空行,结果规则被归到上一组,或者与后面的 User-agent: * 产生理解上的偏差。建议把通用规则放在最后,特殊蜘蛛单独成组,并在组内加注释说明用途和添加时间。
别忘了声明站点地图
Sitemap 一行写在文件末尾,可以帮助蜘蛛更快发现新地址,但它只是线索,不代表会被收录。
最容易踩的几个坑
- 全站 Disallow: / 之后忘记撤销,测试环境的规则被带到正式站
- 屏蔽了 CSS、JS、图片目录,蜘蛛拿不到渲染所需资源,页面评估失真
- 为屏蔽带参数的筛选地址,把正常列表页一起挡在门外
- 为了临时下线一篇稿子,顺手把整个栏目路径写进 Disallow
- 多套环境共用一份文件,测试规则误发到生产环境
改完之后怎么验证
- 用搜索引擎官方提供的 robots.txt 测试工具,输入具体 URL 看判定结果是否符合预期
- 在服务器日志里筛选蜘蛛请求记录,确认被禁止的目录确实不再被抓,需要抓的目录仍正常出现
- 观察搜索平台后台的抓取统计,看抓取量是否出现异常下滑
- 把改动记进运营日志,注明时间、修改人、原因,便于日后回滚排查
规则越少越安全。没想清楚为什么要加一条 Disallow 之前,先不要加。
维护节奏建议
robots.txt 不需要频繁调整。建议按季度,或者在大改版、上线新栏目、下线旧频道时复查一次,重点确认三件事:是否还有过期规则、是否误伤静态资源、Sitemap 地址是否仍指向有效文件。改动尽量选择流量较低的时段,改完留出几天观察日志,再决定下一步怎么调。