不少人把 noindex 和 nofollow 混為一谈,以為入口頁一旦加了 noindex,里面的連結就“作废”了。實际上,noindex 管的是“這個頁面本身要不要進索引”,不管“頁面里的連結要不要被跟随”。只要入口頁本身還能被抓取,里面的目标 URL 依然有机會被搜尋蜘蛛發現。
noindex 到底管什么
noindex 是给頁面自己下的指令,含义是:別把我放進搜尋结果。它不涉及頁面上的出鏈。搜尋蜘蛛抓到一個带 noindex 的入口頁时,大致會做两件事:讀取 noindex,然後繼續解析頁面内容、顺着 a 标簽里的 href 去發現新的 URL。這两件事彼此獨立。
真正可能挡住“顺着連結往下走”的,是另外几個東西:
- rel=nofollow:寫在單個連結上,表示不跟随這條連結。現在多數搜尋引擎把它当作提示,而不是硬性指令。
- robots.txt 的 Disallow:禁止抓取该路径。頁面根本抓不到,里面的連結自然也無從解析。
- 登入墙、403、驗證碼:内容拿不到,連結也拿不到。
三種寫法的實际差別
假设入口頁 A 上有指向目标 URL B 的連結,可以對比几種配置:
- noindex, follow:A 不進索引,B 的連結正常被發現和跟随。這是“只想隐藏入口頁、但保留連結通路”时比較常用的寫法。
- noindex, nofollow:A 不進索引,連結也不鼓励跟随。B 被發現的概率會明顯下降,尤其是 B 没有其他外鏈来源时。
- robots.txt 里 Disallow 掉 A:A 抓不到,連結基本没戏,除非 B 能從別的地方被發現。
一句话记:noindex 是“別收錄我”,nofollow 是“別跟着我走”,Disallow 是“別来抓我”。三者不能互相替代。
一個容易被忽略的坑
如果頁面同时長期挂着 noindex 和 nofollow,部分搜尋引擎會把它整体当作 noindex, nofollow 来處理——也就是说,即便你之後去掉了 nofollow,這個判断可能還會沿用一段時間。所以如果本意只是隐藏入口頁、希望連結繼續被跟随,就別顺手加上 nofollow,寫成 noindex, follow 更干净。
寫在 meta 里和寫在响應头里不一样
noindex 可以寫在 meta 标簽里,也可以通過 HTTP 响應头的 X-Robots-Tag 下發。两者都能生效,但要注意:寫在响應头里时,它作用于整個响應,包括非 HTML 文件。如果入口頁前面有缓存或 CDN 层,改完之後要確認缓存已经刷新,否則搜尋蜘蛛拿到的仍是舊的响應头。
想確認有没有生效,看這几個地方
- 服務器日誌里,入口頁 A 是否有搜尋蜘蛛的抓取记錄,返回碼是否為 200。
- 目标 URL B 的日誌里,是否出現了来自 A 的抓取痕迹或 Referer。
- 用抓取測試工具查看 A 的渲染结果,確認連結在渲染後仍然存在。纯 JS 插入的連結需要單獨驗證。
如果 A 有抓取记錄、返回 200,但 B 長期没有任何被抓的迹象,問题通常不在 noindex,而在別處:連結是否真的寫在 HTML 里、是否被 nofollow、B 自己是否返回 4xx 或 5xx、入口頁連結數量是否過多而稀释了抓取预算。
什么情况下反而建议用 Disallow
如果入口頁只是一個技術中轉、内容對用戶毫無意义,而且你並不依赖它来完成目标 URL 的發現,那用 robots.txt 屏蔽更干脆,也能省下抓取配額。反過来,只要你還需要它承担“入口發現”的角色,就別屏蔽,用 noindex, follow。
小结
noindex 不等于 nofollow,更不等于屏蔽抓取。想隐藏入口頁又保留連結通路,用 noindex、follow;想彻底不抓,用 robots.txt;想不跟随單條連結,用 nofollow。分清這三件事,排查問题时就不會把方向搞反。