在蜘蛛池的日常配置里,入口頁通常不希望被收錄,于是加上 noindex;但入口頁存在的意义又是把搜尋蜘蛛引向目标 URL。這两件事听起来矛盾,實际上分属不同层面。noindex 管的是“這一頁要不要進索引”,它並不要求蜘蛛停止訪問,也不直接阻止蜘蛛解析頁内連結。正常流程是:蜘蛛抓取入口頁,讀到 noindex,决定不索引该頁,同时依然可能繼續處理頁面里的連結,再顺着去發現目标 URL。
抓取、索引、連結跟随是三件事
很多排查绕不開的原因,是把這三层規則当成一句话来用。可以粗略對應:
- 抓取层:robots.txt 的 Disallow,决定蜘蛛能不能来訪問這個 URL。
- 索引层:noindex(meta 或 HTTP 头),决定這一頁是否進入索引。
- 連結层:nofollow、rel 属性、連結是否可解析,影响蜘蛛是否繼續跟随頁内連結。
入口頁只加 noindex,連結层没有動,連結被發現的可能性通常還在。相反,一旦在 robots.txt 里把入口頁 Disallow,蜘蛛压根不抓這個頁面,頁内連結也就难以被讀到,這时 noindex 寫了也白寫,因為蜘蛛看不到。
noindex 與 nofollow 別寫混
蜘蛛池里最常见的失誤,是把两個指令合並成一條 noindex, nofollow。本意只是不想入口頁被收錄,结果顺手把連結跟随也削弱了。寫法不同,效果侧重也不同:
- 只寫 noindex:入口頁不進索引,頁内連結仍有机會被處理。
- 寫 noindex, nofollow:入口頁不進索引,且不保證繼續跟随頁内連結。
- 只用 X-Robots-Tag 头寫 noindex:适合非 HTML 响應,作用與 meta 類似,但来源在 HTTP 头。
- robots.txt 寫 Disallow:阻止抓取本身,頁内連結通常不會被解析用于發現。
如果入口頁的定位就是轉發發現,一般不建议加 nofollow;如果入口頁只是歷史遗留、纯粹不想出現在搜尋结果里,才需要考虑更嚴格的组合。
几種容易失效或覆盖的情况
标簽没有真正輸出
用模板判断、前端脚本注入或邊缘渲染生成的 noindex,可能只在浏览器里存在,蜘蛛拿到的 HTML 里並没有這段标记。核對时要看直接請求返回的源碼,而不是開發者工具里渲染後的 DOM。
X-Robots-Tag 與 meta 叠加
如果服務器或 CDN 给入口頁加了 X-Robots-Tag,它會和頁面里的 meta 一起參與判断。两者冲突时,通常限制更强的一方生效。例如头里寫了 noindex、頁面里没寫,结果一样是不索引。
CDN 仍返回舊版本
改過 noindex 配置後,缓存层可能還在輸出舊 HTML,蜘蛛讀到的仍是改動前的标记。此时先清缓存,再確認實际响應内容里到底有什么。
連結本身不可解析
連結用脚本後置渲染、放在 iframe 里、或寫成不可点击的形式,即便 noindex 配置正确,連結层也已断掉。這類問题要單獨排查,不要和 noindex 混為一谈。
怎么驗證連結有没有被發現
- 看日誌:入口頁被抓取的時間点之後,目标 URL 是否出現抓取請求。只有入口頁、没有目标 URL,先怀疑 nofollow、robots 規則或連結輸出方式。
- 看狀態:入口頁在抓取統計里顯示“已抓取未索引”是正常現象,不代表連結没被跟随。
- 做對照:同一批入口頁里保留一條已知正常的連結作為對照,判断是配置問题還是整体抓取速度變化。
- 小流量測試:新建一個入口頁,只放少量目标 URL,只加 noindex 不加 nofollow,观察一段時間的抓取日誌再决定是否推廣到全站。
一点實践建议
先把目标想清楚,再選規則。目标是入口頁不進索引、連結繼續可用,用 noindex 就够;目标是彻底阻止抓取,用 robots.txt,但要接受連結發現同步受限。两层規則同时存在时,務必分別核對,別用一句 noindex, nofollow 把三件事一起處理掉。另外,如果入口頁長期 noindex 且内容單薄,蜘蛛来訪频次可能逐步下降,進而影响目标 URL 的發現速度,這類現象更适合放到抓取频次和日誌趋势里去观察。
noindex 不阻止蜘蛛讀取頁面,nofollow 才影响連結是否被跟随,robots.txt 阻止的是抓取本身。三者作用层不同,排查时不要混在一句话里下结论。