给連結加上 rel="nofollow" 之後,這個 URL 還會不會被搜尋蜘蛛發現?這是很多站長在整理内鏈时會遇到的實际問题。答案不是简單的“會”或“不會”,而是取决于你用的是哪一层属性、蜘蛛当时從哪個入口到達,以及這個 URL 是否還有別的發現路径。
nofollow 是提示,不是開關
早期 nofollow 被当作“不传递權重”的硬性指令,後来主流搜尋引擎把它調整為提示(hint):蜘蛛可以把 nofollow 連結当作發現新 URL 的线索,只是通常不會把它作為信任传递的依據。也就是说,nofollow 主要影响連結關系的走向,而不是绝對阻断抓取。
理解這一点之後,很多現象就说得通了:一條被标注的連結依然可能出現在日誌里,被請求、被讀取,甚至最终進入索引——因為蜘蛛發現它的路径並不只有這一條連結。
三层属性要分清楚
連結层面的 rel 属性
- rel="nofollow":针對單條連結的提示,仍可能被跟随用于發現。
- rel="ugc":用于用戶生成内容,语义上等同于 nofollow 類提示。
- rel="sponsored":用于付費或广告性质的連結。
三者都属于提示類,差別主要在语义表達,而不在于抓取行為本身。
頁面层面的 nofollow 與 X-Robots-Tag
頁面級的 meta robots nofollow 影响的是该頁面上所有連結;而 X-Robots-Tag 可以在 HTTP 响應头里表達同样的意思,常见于 PDF、图片等非 HTML 资源的控制。
robots.txt 與 nofollow 的分工
robots.txt 的 Disallow 作用在抓取层面,被禁止的 URL 蜘蛛一般不會再發起請求;nofollow 不阻止請求,只是提示不要跟随或传递信任。如果目标是让某個 URL 不被抓取,應该優先用 robots.txt 或合适的狀態碼;如果只是不想让某條連結传递信任關系,nofollow 更合适。
判断一條 nofollow 連結會不會被抓
- 看這個 URL 在站内是否還有普通連結入口,比如導航、正文或相關推荐。
- 看 Sitemap 或 RSS 里是否也提交了它。
- 看服務器日誌中该 URL 是否出現蜘蛛的請求记錄。
- 看被标注的連結目标是否仍返回 200 狀態碼。
只要有其他入口存在,nofollow 基本挡不住 URL 被發現。
nofollow 管的是“要不要跟随這條連結的信任關系”,而不是“這個 URL 能不能被請求”。
站点运营里常见的三種用法
- 评论区、论坛等 UGC 区域:加 rel="ugc" 或 nofollow,减少垃圾連結带来的抓取浪費,但這些 URL 仍可能通過其他入口被抓。
- 付費广告與联盟連結:用 rel="sponsored",标注清晰也更稳妥。
- 不想被抓取的隐私頁、站内搜尋结果頁、參數组合頁:優先考虑 robots.txt 或返回恰当狀態碼,而不是只挂一個 nofollow。
容易踩的坑
- 以為全站加 nofollow 就能省下抓取预算——實际效果有限,真正有效的做法是收敛 URL 空間。
- 把 nofollow 当成防重复收錄的手段——重复内容更适合用 canonical 處理。
- 連結加了 nofollow,却仍在 Sitemap 里提交,两個信号互相打架。
- 只盯連結属性,忽略了頁面本身仍被大量内鏈指向,日誌里照样有抓取。
怎么核對
把服務器日誌按 URL 聚合,观察被标注連結的目标有没有蜘蛛請求;再對照抓取相關的官方工具查看抓取狀態。核對时注意区分被抓取和被索引,這两件事经常不同步,混在一起看容易得出错誤结论。
结论是:nofollow 属于提示性属性,它改變的是連結信任的走向,而不是 URL 的可见性。想让某些 URL 不被發現、不被抓取,需要從入口结构、robots.txt、Sitemap 提交和狀態碼几個方面一起考虑,比單靠一個 rel 属性可靠得多。