網站收錄

noindex 加了却没掉:先查 robots.txt 有没有拦住抓取

给頁面加了 noindex,索引里却一直還在,很多人以為是搜尋引擎没理會。更常见的原因是那條指令根本没被讀到:robots.txt 挡住了抓取、noindex 由脚本注入、响應头與頁面 meta 不一致。本文把抓取许可、索引许可、代表頁三件事拆開,给出核對顺序與常见组合的處置方式。

網站收錄

noindex 加了却没掉:先查 robots.txt 有没有拦住抓取

给一批頁面加了 noindex,過了一個月去查,索引里還在,有的甚至還能看到舊的摘要。這时候第一反應往往是搜尋引擎没理會,但更常见的情况是:那條 noindex 根本没被讀到。

先把三件事分開:能不能抓、要不要收、谁代表它

這三件事對應三套不同的机制,實际工作中经常被混着用:

  • 能不能抓:由 robots.txt 决定,管的是蜘蛛能不能来取這個地址。
  • 要不要收:由 meta robots 的 noindex 或 HTTP 响應头里的 X-Robots-Tag 决定,管的是取到内容之後要不要放進索引。
  • 谁代表它:由 canonical 决定,管的是多個相似地址里哪一個算正式版本。

關键在顺序:不能抓,就取不到内容;取不到内容,頁面里那句 noindex 就是一句蜘蛛看不到的话。所以 robots.txt 里把一個目錄 Disallow 掉,同时又指望目錄内頁面的 noindex 生效,這個组合基本是自相矛盾的。

noindex 没生效,常见是這几種原因

  • robots.txt 把该地址或整個目錄禁止抓取,蜘蛛進不来,讀不到 noindex。
  • noindex 由脚本動態插入,原始 HTML 里没有,第一次抓取时看不到。
  • 頁面 meta 寫的是 noindex,但服務器响應头里带着 index,两者不一致,實际以响應头為准。
  • 没注意到還有別的地址寫法指向同一份内容,比如带參數的變体,你只處理了其中一個。
  • 頁面仍然被大量内鏈和外鏈指向,蜘蛛反复来抓,狀態更新得慢。

核對顺序建议

  1. 取一次 robots.txt,確認目标地址是否放行,注意通配符和目錄寫法的差別。
  2. 看 HTTP 响應头里的 X-Robots-Tag,再看原始 HTML 里的 meta robots,两邊都记下来。
  3. 看 canonical 指向哪里。如果 noindex 和 canonical 同时存在,先確認你到底想要哪個结果。
  4. 確認 noindex 寫在服務端返回的 HTML 里,而不是靠脚本事後插入。
  5. 把同一内容的其它地址寫法找出来,逐個確認處理方式是否一致。
  6. 確認頁面上没有仍然指向它的入口連結,尤其是導航、列表頁和 sitemap。

几種常见组合分別怎么處理

  • robots.txt 允许 + noindex:這是正常做法,接下来只是等重新抓取,時間不做保證。
  • robots.txt 禁止 + noindex:noindex 不生效。要么放開抓取让它讀到,要么改用 301 或 404、410 這類更直接的方式。
  • 既想屏蔽抓取又想让它掉出索引:單靠 robots.txt 做不到。可行的是先把頁面處理成不再返回正常内容,再考虑屏蔽抓取。
  • 整站或整目錄要下线:用 410 配合移除内鏈,通常比逐個加 noindex 更省事,也更容易核對。

两個容易踩的坑

一個是把 noindex 当成刪除来用。noindex 只是不让它進索引,地址本身還在,被訪問时依然返回内容。如果目标是彻底下线,用 404 或 410 更贴近意图。

另一個是只看工具狀態就下结论。不同查询入口顯示的狀態和更新时点可能不一致,最好以自己取到的响應头、HTML 和 robots.txt 為准,把這三份證據對齐再判断。

核對這類問题时,顺序比结论重要:先確認蜘蛛能不能進来,再谈它讀到了什么、要不要收。

最後提醒一句,任何指令生效都需要一次重新抓取,节奏取决于站点被抓取的频率和頁面本身的重要程度,没有固定的時間承诺。與其反复改指令,不如按上面的顺序走一遍,確認每一步的實际返回值,避免几套机制互相打架。