站点运营

站点运营: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 一起過一遍,改動前後都留個记錄,方便回溯。