站内連結上加一個 rel="nofollow",是不少运营和開發的习惯動作。加完之後,蜘蛛到底還會不會顺着這條連結走過去,答案往往和直觉不太一样。
nofollow 原本想解决什么問题
這個属性的原始用途,是标记“這個連結不是本站主動背书的”。典型场景是不可信的外部連結、广告位、联盟連結和用戶生成内容。它的核心语义偏向不要把它当作一次投票,而不是“不要訪問這個地址”。
把這句话记住,後面很多困惑就容易理解了:nofollow 管的是連結信号,不是服務器訪問權限。
蜘蛛遇到 nofollow 連結时的實际動作
- 多數搜尋引擎會降低或忽略這條連結传递的權重信号。
- 是否抓取目标 URL,各家引擎策略並不统一,有的仍會把该地址纳入發現队列。
- 即便站内全部加了 nofollow,這個 URL 也可能通過 Sitemap、外部連結或其它内鏈被找到。
所以,看到一個 nofollow 連結對應的 URL 仍然出現在抓取日誌里,並不代表設定失效,而是它本来就属于另一個层面的問题。
URL 發現與權重传递是两件事
把流程拆開會更清楚:發現(蜘蛛知道這個地址存在)、抓取(服務器返回了内容)、索引(引擎判断是否入库)、排序(在结果中排到什么位置)。nofollow 主要作用于後两者之間的信号判断,對“服務器有没有被訪問”這件事影响有限。
站内用 nofollow 的几個常见誤区
把它当成 robots.txt 用
robots.txt 是抓取层面的規則,告诉蜘蛛哪些路径不必来請求;nofollow 是頁面内連結层面的提示。想阻断抓取,靠 nofollow 是放错了位置。
用它来“节省抓取预算”
效果通常有限。真正影响预算的是站点里存在多少低價值、重复、無法訪問的 URL,以及服務器响應是否稳定。與其逐個連結加标簽,不如先把無意义的參數頁、空列表頁收敛掉。
给重要栏目入口加 nofollow
站内導航、栏目入口這類連結,是蜘蛛建立抓取路径的骨架。给它們加 nofollow,可能让该栏目下的一批 URL 發現變慢,行走半径變窄,得不偿失。
更合适的替代做法
- 不希望被抓取:用 robots.txt 划定范围,注意規則寫清楚,避免誤伤。
- 可以抓取但不希望被索引:用 noindex。需要留意的是,noindex 頁面本身仍可能被請求。
- 同一内容多個地址:用 canonical 指明主版本,而不是靠 nofollow 硬压。
- 低價值參數頁或篩選頁:從内鏈结构上收敛,必要时再配合 robots.txt。
- 用戶生成内容、广告位:nofollow 或同類属性仍在合理使用范围内,同时配合审核机制。
几種机制各管一段:robots.txt 管抓取范围,nofollow 管連結信号,noindex 管是否入库,canonical 管重复归並。不要指望一個标簽解决全部問题。
怎么確認設定有没有起作用
比較實际的做法是看日誌:观察被标记連結對應的 URL,是否仍有蜘蛛請求。如果仍被訪問,通常是正常的;真正需要關注的是這些請求带来了什么结果,頁面是否返回 200、内容是否與预期一致、是否反复抓取同一批無變化地址。
如果發現某類 URL 被大量重复抓取,先排查内鏈是不是把它們放在了導航、列表等高频位置,再考虑是否需要調整结构,而不是急着加 nofollow。
總结一句:nofollow 是一個表達態度的属性,不是一道门禁。想控制蜘蛛走哪條路,最终還是要回到站点结构、服務器响應和 URL 本身的取舍上。