做站点运营,很多抓取和索引问题并不是服务器宕机,而是一条 robots 规则写歪了。robots.txt 和 meta robots 一个在服务器根目录,一个在页面头部,看似简单,却经常在改版、测试、上线时被忽略。它们一旦出错,影响面往往不是一两个页面,而是整站或整个栏目。
先分清抓取与索引
这两个机制管的事情不一样,混在一起写就容易出问题。
- robots.txt:告诉蜘蛛哪些地址可以抓取、哪些不要抓。它控制的是抓取行为,不是索引结果。
- meta robots:写在 HTML 的 head 里,告诉蜘蛛这个页面能不能被索引、能不能跟随链接。它控制的是索引和链接处理。
- X-Robots-Tag:通过 HTTP 响应头传递类似指令,适合 PDF、图片、视频等非 HTML 资源,也适合批量控制。
如果既在 robots.txt 里屏蔽某个页面,又希望它通过 meta noindex 退出索引,蜘蛛可能根本读不到 noindex。想让页面不被索引,通常应允许抓取,再用 noindex 控制。
robots.txt 常见自查点
打开浏览器访问你的域名加 /robots.txt,先确认它返回 200,并且内容是你预期的版本。然后逐条核对:
- 有没有出现 Disallow: /,导致整站被挡。测试环境规则误上生产是常见原因。
- 是否屏蔽了 CSS、JS 等渲染资源。蜘蛛看不到样式和脚本,可能无法正确理解页面。
- 重要栏目、详情页、分页路径有没有被误伤。通配符 * 和结尾 $ 的写法要检查。
- Sitemap 指令是否指向正确且可访问的地址。地址写错等于没提交。
- User-agent 拼写和大小写是否准确,是否把不同爬虫的规则混在一起。
- 是否存在多份规则、旧规则残留,或者注释里写着“临时屏蔽”却一直没删。
meta robots 与 X-Robots-Tag 自查
页面级的控制更细,也更容易因为模板复制而出错。
- 检查全站模板是否误加了 noindex。这种情况通常表现为大量页面同时从索引中消失。
- 确认 nofollow、noarchive、nosnippet 是否真的需要。过度使用会限制蜘蛛对链接和摘要的处理。
- 分页、筛选、打印页、排序参数页,是否适合用 noindex, follow,既不让它们占索引,又保留链接发现能力。
- PDF、图片、视频等非 HTML 文件,检查响应头里有没有意外的 X-Robots-Tag: noindex。
- 不要同时让 noindex 和 canonical 指向其他页面,两者表达的方向可能冲突,蜘蛛需要自己判断。
上线前后的核对步骤
- 直接访问 /robots.txt,确认返回状态和内容,不要只看本地文件。
- 用搜索引擎提供的 robots.txt 测试工具,输入几个关键 URL,看是否被允许抓取。
- 抽查首页、栏目页、详情页的 HTML 源码,确认 meta robots 没有误写。
- 用开发者工具或命令行查看 HTTP 响应头,确认 X-Robots-Tag 符合预期。
- 上线后观察索引状态变化,但不要期待立刻生效,搜索引擎需要时间重新抓取和处理。
三个容易踩的坑
- 用 robots.txt 清理索引:屏蔽抓取后,已有索引不一定马上消失,页面甚至可能仍出现在结果里,只是没有摘要。
- 测试环境规则带上线:改版或迁移时,把 staging 的 noindex、Disallow 一并发布,导致线上页面被挡。
- 只检查首页:栏目页、详情页、分页可能由不同模板生成,规则未必一致,抽查范围要覆盖主要模板。
建议把 robots 检查放进上线清单,并在每次改版、迁移、批量调整模板后抽一次。规则越简单、越集中,越不容易在某个角落留下一条“临时屏蔽”。