不少站長把 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,或者生产环境沿用了測試期的屏蔽規則,上线後蜘蛛被一律挡在门外。
排查顺序
- 先看 robots.txt 里是否有针對该路径的 Disallow,注意通配符和大小寫寫法。
- 再查响應头里有没有 X-Robots-Tag,包括反向代理和 CDN 改寫過的头。
- 接着看 HTML 里的 meta robots,注意模板繼承和參數拼接後是否被覆盖。
- 最後對照服務器日誌,確認蜘蛛到底有没有成功抓到返回 200 的頁面。
調整时的几個习惯
- 想让頁面彻底不出現:先放開抓取,只加 noindex;等確認從索引中消失之後,再决定是否需要 Disallow。
- 站内搜尋、篩選參數這類頁面,用 noindex,follow 通常比直接 Disallow 更合适,既能减少大量组合 URL 進索引,又不至于把站内連結通路掐断。
- 能统一在服務器层下發的指令就別散落在各個模板里,减少一處改了、另一處漏改的情况。
- 每次改完 robots.txt 或頁面模板,抽查几個有代表性的 URL,確認线上實际下發的指令與预期一致。
robots.txt 不是隐私工具。真正私密的内容應当放在登入之後,而不是靠一條屏蔽規則挡住。
這類規則平时不出問题,一出問题往往是整站級別的。建议把它列進季度巡检清單,和站点地图、canonical 一起過一遍,改動前後都留個记錄,方便回溯。