網站收錄

noindex 寫了却没生效:三種寫法的差异與排查顺序

noindex 加上去却没從索引里消失,通常不是搜尋引擎忽略了指令,而是标簽没被讀到,或者几種屏蔽方式互相冲突。本文拆解 meta 标簽、X-Robots-Tag 與 robots.txt 三種寫法的生效差异,给出可执行的自查顺序,並說明什么情况下该用 404 而不是 noindex。

網站收錄

noindex 寫了却没生效:三種寫法的差异與排查顺序

把 noindex 加上去,過几天在搜尋结果里還能看到那個頁面,這是很常见的情况。多數时候不是搜尋引擎“不听话”,而是标簽没被讀到、讀到了没被采纳,或者几種屏蔽方式互相打架。先搞清楚自己在用哪一種寫法,再按顺序排查,通常比反复改代碼更快。

三種寫法管的不是一回事

meta robots 标簽

寫在 HTML 的 head 里,形如 meta name="robots" content="noindex"。它跟着這份 HTML 走,頁面能被抓取才會被讀到。如果正文由 JS 渲染,或者标簽被放進了 body,都可能讀不到。

X-Robots-Tag 响應头

在服務器或 CDN 上配置,對 PDF、图片這類非 HTML 文件也能生效,還可以按目錄批量下發。好處是省事,風險也在省事:一條規則配错路径,整段站点都可能受影响,改之前先確認作用范围。

robots.txt 的 Disallow 不是 noindex

很多人把 robots.txt 当成屏蔽收錄的工具,這恰好是最容易出問题的地方。Disallow 只阻止抓取,頁面依然可能留在索引里,因為搜尋引擎看不到頁面上的 noindex,但它能從外鏈锚文本、标题等线索知道這個 URL 存在。更麻烦的是,Disallow 會挡住抓取,让你的 noindex 永遠没机會被讀到。

想彻底從索引里去掉一個 URL,顺序是:先允许抓取,再让頁面返回 noindex(或 404/410),等抓取重新生效後逐步移除。反過来做,往往两邊都不生效。

加了 noindex 還在索引里的常见原因

  • robots.txt 同时 Disallow 了该路径,标簽根本没被讀到。
  • 标簽寫在 body 里,或由 JS 動態注入,抓取拿到的初始 HTML 中並不存在。
  • CDN、頁面缓存或预渲染服務返回的還是舊版本 HTML。
  • 该内容有多個 URL 版本(带參數、大小寫、结尾斜杠不同),noindex 只加在了其中一個。
  • 頁面自身有 canonical 指向別處,或別的頁面 canonical 指向它,規則互相冲突。
  • 标簽拼寫有誤,例如 no index、no-index。
  • noindex 刚生效不久,索引更新需要時間,搜尋词高度匹配时仍可能短暂出現。

自查顺序

  1. 用抓取工具或 URL 检查功能,看搜尋引擎實际拿到的响應里有没有那句 noindex。以响應内容為准,不以本地代碼為准。
  2. 確認抓取没有被 robots.txt 挡住,挡了就先把 Disallow 去掉。
  3. 確認标簽位于 head 中,並且不是執行时才出現。
  4. 检查响應头里有没有 X-Robots-Tag,同名規則可能覆盖或叠加。
  5. 检查 canonical 與 noindex 是否指向同一個 URL,冲突时先把意图统一。
  6. 排查缓存层,强制刷新,让訪客和爬虫拿到同一版 HTML。
  7. 批量頁面要抽几個样本逐一驗證,別假设一條配置對所有 URL 都生效。

noindex 還是 404,怎么選

頁面只是暂时不想被搜到、内容以後還要用,用 noindex;内容确定永久下线,直接返回 404 或 410 更干脆,也不用長期维護标簽。如果頁面只是換了地址,應该用 301 把流量和信号带過去,而不是加個 noindex 放在那里不管。

最後提醒一点:noindex 表達的是“請不要收錄”,不等于“立刻消失”。移除是逐步發生的,期間頁面仍可能出現在结果里。隔一段時間回来查一次 URL 狀態,比当天反复改配置更有參考價值。