站点运营

meta robots 与 X-Robots-Tag 自查:把“别抓我”的指令用对地方

meta robots 与 X-Robots-Tag 分别写在页面和响应头里,决定蜘蛛抓到内容之后如何处理。很多站点的 noindex 来自模板、插件或服务器配置,平时不易察觉。这篇文章梳理两类指令的区别、常见误用和一份可执行的自查清单,帮助你在不动正文的前提下,把该放的页面放开、该挡的页面挡住。

站点运营

meta robots 与 X-Robots-Tag 自查:把“别抓我”的指令用对地方

为什么这两类指令值得单独排查

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,文件本身仍可能被抓到。

自查清单

  1. 打开页面源码,搜索 robots,确认 head 里的指令与预期一致,注意不要出现在 HTML 注释里。
  2. 用 curl -I 或浏览器开发者工具看响应头,确认没有意外的 X-Robots-Tag。
  3. 检查 CDN 与缓存配置,页面内容改过之后,响应头是否也跟着更新。
  4. 抽查分页、标签聚合页、搜索结果页、打印页等容易被模板统一处理的页面类型。
  5. 检查 robots.txt 与页面 noindex 是否互相矛盾。
  6. 确认 nofollow 的层级正确,该在链接上而不是在整页上。
  7. 上线前和改版后各跑一遍抽样,把检查结果记下来,方便前后对比。

验证时可以用到的办法

站长工具通常提供网址检查和抓取测试,能看到蜘蛛实际拿到的响应头和页面内容。也可以直接用命令行请求页面,看返回头里有没有 X-Robots-Tag,再和页面源码里的 meta 指令对照。对图片、PDF 这类资源,用同样的方式请求文件地址即可。

指令只是表达意图,最终是否抓取、是否索引由搜索引擎决定。把该抓的页面放开,把不该抓的页面明确挡住,剩下的交给时间。