为什么这两类指令值得单独排查
robots.txt 决定蜘蛛能不能来抓,meta robots 与 X-Robots-Tag 决定抓到之后怎么处理。前者像站点门口的牌子,后者贴在页面或文件本身。很多站点的 noindex 并不是编辑手动加的,而是模板、插件或服务器配置在后台统一输出的,平时不容易注意到。一旦输出错,页面可能长期不进索引,排查时还容易只盯着 robots.txt,忽略页面内部和响应头里的信号。
先分清两条通道
meta robots 写在 HTML 的 head 里,只对当前 HTML 页面生效,常见取值包括 noindex、nofollow、noarchive、nosnippet、max-snippet、max-image-preview 等。X-Robots-Tag 是 HTTP 响应头,可以作用在 HTML 页面,也可以作用在 PDF、图片、视频、JS 等非 HTML 资源上。两者同时出现时,限制性更强的那个通常会被遵守,所以不要以为页面里写了 index 就能覆盖响应头里的 noindex。
几种常见的误用
全站模板误加 noindex
测试环境上线时忘记去掉 noindex,或者主题模板把 noindex 当成默认值输出,是很常见的情况。表现是页面能正常访问、内容也在,但索引里一直不见踪影。检查时不要只看首页,栏目页、详情页、分页、搜索结果页都各抽一两个样本看源码,才能确认影响范围。
robots.txt 与 noindex 打架
如果 robots.txt 已经禁止抓取某个目录,蜘蛛就看不到目录里的 noindex 标签。结果是页面既不进索引,也无法通过 noindex 让它明确退出;如果之前已经被索引,还可能残留旧快照。这类情况下要么放开抓取让蜘蛛读到 noindex,要么接受 robots.txt 的限制,不要同时用两套互相矛盾的方案。
nofollow 用得太随意
nofollow 写在页面级别会限制该页所有链接的传递。如果只是为了处理少量不可信链接,优先在单个链接上加 rel="nofollow" 或 rel="sponsored",而不是整页 nofollow。整页 nofollow 用多了,站内正常的导航和内容链接也会一起受影响。
X-Robots-Tag 在非 HTML 资源上丢错
图片、PDF、视频文件没有 head,只能靠响应头控制。如果服务器或 CDN 对所有文件统一加了 noindex,可能连正常希望被发现的图片和文档一起挡掉。反过来,需要保密的文件如果只在页面里写了 noindex,文件本身仍可能被抓到。
自查清单
- 打开页面源码,搜索 robots,确认 head 里的指令与预期一致,注意不要出现在 HTML 注释里。
- 用 curl -I 或浏览器开发者工具看响应头,确认没有意外的 X-Robots-Tag。
- 检查 CDN 与缓存配置,页面内容改过之后,响应头是否也跟着更新。
- 抽查分页、标签聚合页、搜索结果页、打印页等容易被模板统一处理的页面类型。
- 检查 robots.txt 与页面 noindex 是否互相矛盾。
- 确认 nofollow 的层级正确,该在链接上而不是在整页上。
- 上线前和改版后各跑一遍抽样,把检查结果记下来,方便前后对比。
验证时可以用到的办法
站长工具通常提供网址检查和抓取测试,能看到蜘蛛实际拿到的响应头和页面内容。也可以直接用命令行请求页面,看返回头里有没有 X-Robots-Tag,再和页面源码里的 meta 指令对照。对图片、PDF 这类资源,用同样的方式请求文件地址即可。
指令只是表达意图,最终是否抓取、是否索引由搜索引擎决定。把该抓的页面放开,把不该抓的页面明确挡住,剩下的交给时间。