站点运营

站点运营:robots.txt 与页面级 noindex 自查,别让抓取指令互相打架

robots.txt 管抓取,noindex 管索引,两者职责不同却常被混用。一旦站点级屏蔽与页面级指令同时存在,就会出现「屏蔽了却还被收录」「放开了却永远进不来」的情况。这篇整理常见的冲突组合、排查顺序和调整习惯,方便运营同学定期核对。

站点运营

站点运营:robots.txt 与页面级 noindex 自查,别让抓取指令互相打架

不少站长把 robots.txt 和 noindex 当成同一类工具,觉得只要写了「不让来」,页面就不会出现在搜索结果里。实际上这两者作用的位置完全不同,用错地方不但达不到目的,还可能让本来能正常收录的页面长期缺席。

先分清两者管什么

robots.txt 管的是抓取。它告诉蜘蛛哪些路径不必来抓。注意它并不阻止 URL 被索引:如果别处有链接指向这个地址,蜘蛛完全可能只凭链接和标题就把 URL 展示出来。因为没抓到正文,结果页上往往就是一条没有描述的空条目,而且这种条目自己很难消失。

noindex 管的是索引。它写在页面 head 里的 meta 标签,或者通过 HTTP 响应头 X-Robots-Tag 下发,要求蜘蛛抓到页面后不要把它放进索引。它的前提是蜘蛛得先抓到这个页面,否则指令等于没写。

几种常见的自相矛盾

  • Disallow 和 noindex 同时用。robots.txt 里屏蔽了目录,页面里又写了 noindex。蜘蛛根本进不来,看不到 noindex,页面仍可能以纯 URL 的形式被收录。
  • 全站 noindex 忘了撤。建站阶段为了防收录加过一次,上线后只改了 robots.txt,页面模板里的 noindex 还留着,整站长时间进不了索引。
  • 响应头与 meta 不一致。服务器或 CDN 层设置了 X-Robots-Tag: noindex,模板里却写着 index。多个来源的指令同时存在时,通常以更严格的那个为准,实际效果和你在模板里看到的并不一样。
  • 环境串了。测试站复用了生产站的 robots.txt,或者生产环境沿用了测试期的屏蔽规则,上线后蜘蛛被一律挡在门外。

排查顺序

  1. 先看 robots.txt 里是否有针对该路径的 Disallow,注意通配符和大小写写法。
  2. 再查响应头里有没有 X-Robots-Tag,包括反向代理和 CDN 改写过的头。
  3. 接着看 HTML 里的 meta robots,注意模板继承和参数拼接后是否被覆盖。
  4. 最后对照服务器日志,确认蜘蛛到底有没有成功抓到返回 200 的页面。

调整时的几个习惯

  • 想让页面彻底不出现:先放开抓取,只加 noindex;等确认从索引中消失之后,再决定是否需要 Disallow。
  • 站内搜索、筛选参数这类页面,用 noindex,follow 通常比直接 Disallow 更合适,既能减少大量组合 URL 进索引,又不至于把站内链接通路掐断。
  • 能统一在服务器层下发的指令就别散落在各个模板里,减少一处改了、另一处漏改的情况。
  • 每次改完 robots.txt 或页面模板,抽查几个有代表性的 URL,确认线上实际下发的指令与预期一致。
robots.txt 不是隐私工具。真正私密的内容应当放在登录之后,而不是靠一条屏蔽规则挡住。

这类规则平时不出问题,一出问题往往是整站级别的。建议把它列进季度巡检清单,和站点地图、canonical 一起过一遍,改动前后都留个记录,方便回溯。