很多站長把 noindex 当成一道關门的動作,以為加上之後蜘蛛就不會再来了。但去看服務器日誌會發現,带 noindex 的 URL 经常還在被反复抓取。原因並不复杂:抓取和索引是两個獨立動作,noindex 管的是後面那個。
抓取與索引:两個動作,两套判断
蜘蛛訪問 URL、拿到 HTML 内容,這一步是抓取;把内容存進索引、參與排序,這一步是索引。noindex 的作用点在後半程,它传递的意思是:這個頁面可以抓,但不要放進索引里。所以被 noindex 的頁面出現在訪問日誌里,属于正常現象,不是設定失敗。
反過来说,一個頁面能被索引,通常以被抓取過為前提。没有被抓過,搜尋引擎基本没有素材去判断它该不该收錄。
noindex 頁面的几種常见表現
- 繼續被抓取,但搜尋结果里不再出現该 URL 的連結。
- 原本已收錄的頁面加上 noindex 後,從结果中移除需要一段時間,快慢取决于蜘蛛的回訪频率。
- 如果頁面同时被 robots.txt 屏蔽,蜘蛛抓不到内容就讀不到 noindex,頁面有可能以無摘要的形式仍留在结果里。
- 内鏈指向 noindex 頁面仍然會被正常跟随,蜘蛛會顺着連結走過去,只是那個目标頁面依然不進索引。
meta robots 和 X-Robots-Tag 的差別
两者寫法基本一致,区別在位置。meta 标簽寫在 HTML 里,必须等頁面被抓到、解析到 head 部分才生效;X-Robots-Tag 放在 HTTP 响應头里,不用等解析。對 PDF、图片、音视频這類非 HTML 资源,頁面里没有地方放 meta 标簽,通常只能靠响應头来传指令。
如果頁面需要登入才能看到,或者主要内容由 JS 渲染,noindex 的判断可能落在更靠後的處理阶段,生效時間也會更長一些。
nofollow 管的是連結,不是頁面
nofollow 加在連結上,表示對這個連結不做背书,它既不阻止目标頁面被抓取,也不等于目标頁面不會被收錄。想让某個頁面彻底從索引里排除,用 noindex 更直接有效。
還有一種情况值得注意:頁面 A 设了 noindex,但頁面 B 上有很多锚文本指向 A。這些連結依然會被看到,蜘蛛也會顺着走到 A,只是 A 始终不進索引。指望用 noindex 顺手掐断連結關系,通常達不到目的。
noindex 和 canonical 同时用會怎样
有人给同一個頁面同时加上 noindex 和 canonical,想让两套机制一起生效。但两者传递的信号並不一致:noindex 表示不要這個頁面,canonical 表示把它当成另一個 URL 的副本。遇到冲突时,搜尋引擎可能選擇忽略其中一個,具体行為不容易预测。實际操作里,一般只保留一個,按真正想達成的目的来選。
實操中值得注意的几点
- 尽量不要同时用 robots.txt 屏蔽和 noindex,蜘蛛抓不到頁面就讀不到 noindex,两套指令會互相拆台。
- noindex 是頁面級別的指令,不要指望它能连带處理该頁面上的其他 URL。
- 已收錄頁面改成 noindex 後,先確認改動在服務器端真實生效,而不是只改了前端版本或停留在缓存里。
- 想临时下架内容,分清 404、410 與 noindex 的区別:前者表示頁面已经没了,後者表示頁面還在但不给索引。
- 定期對日誌抽样,看看 noindex 頁面被抓的频率。如果明顯偏高,检查是不是有大量内鏈或 sitemap 在持續推送這些 URL。
小结
noindex 只是把頁面挡在索引之外,抓取该来還是會来。想减少無效抓取,與其在 noindex 上反复纠结,不如從内鏈、sitemap 和 URL 入口這几處下手。