站内给連結加 nofollow 是很常见的操作,但围绕它的誤解也很多。有人把它当成“禁止蜘蛛抓取”的開關,给一批連結加上 nofollow 後就等着蜘蛛不再訪問;也有人担心加了 nofollow 會让整條抓取路径断掉。實际執行中,nofollow 的作用比這两個极端都要窄。
nofollow 到底在表達什么
nofollow 寫在 a 标簽的 rel 属性里,例如 rel="nofollow"。它最初的含义是告诉搜尋引擎:這個連結不是站点的背书,不要把它当作投票或權重传递的依據。後来主流的處理方式有所變化,nofollow 更多被当作一種提示,而不是硬性指令。
它解决的是“權重和信任”的問题,不是“抓取和發現”的問题。換句话说,nofollow 並不等于 robots.txt 里的 Disallow,也不等于頁面上的 noindex。
蜘蛛看到 nofollow 連結时,通常怎么做
連結仍然出現在 HTML 里,蜘蛛解析頁面时能看到這個 URL。是否繼續訪問,取决于它自己的判断:連結在頁面中的位置、頁面重要性、同一 URL 是否從別處也能到達、抓取队列的压力等。
- 從内鏈和 Sitemap 都能到達的 URL,即使某處加了 nofollow,蜘蛛也可能照样抓取。
- 只在一個 nofollow 連結里出現、別處没有入口的 URL,被發現和抓取的概率會降低,但不等于零。
- 已经抓取過的 URL,後續复查不受某一條 nofollow 的绝對限制。
把 nofollow 当成“阻止抓取”的工具,通常會得到相反的结果:你以為蜘蛛不會走,日誌里却仍能看到訪問记錄。
哪些地方适合用 nofollow
- 用戶评论、论坛帖子里的外鏈,你無法审核目标頁面质量。
- 广告位、赞助内容、付費連結,需要明确标注關系。
- 登入、註冊、购物车、後台入口等没有索引價值、也不希望被搜尋用戶直接進入的連結。
- 站内一些临时活動頁、跟踪連結,确實不需要蜘蛛把抓取预算花在這里。
但要注意,nofollow 的站点侧效果是“建议不传递權重”,不是“從抓取路径里刪除”。如果這些 URL 同时還有別的入口,蜘蛛仍然可能走到。
真正想控制抓取,该用什么
如果目标是“不让蜘蛛訪問”,應该看 robots.txt 的 Disallow;如果目标是“可以抓但不要收錄”,用頁面級的 noindex;如果目标是“必须登入才能看”,让未登入請求返回合适的 401/403 或跳轉登入頁。三種手段解决的是不同問题,混用容易出错。
還有一個常见错誤:给需要被收錄的頁面加了 nofollow,同时又指望它通過内鏈被蜘蛛發現。内鏈的發現價值和 nofollow 的權重提示是两碼事,重要頁面不必用 nofollow 来“节约權重”。
内鏈结构里,nofollow 要谨慎使用
主導航、面包屑、分類列表、分頁、文章正文里的相關推荐,這些連結承担着 URL 發現和抓取路径的作用。如果大面积加 nofollow,蜘蛛從首頁出發能走的层級會變少,新頁面被發現的速度可能變慢。尤其是新站或内容更新频繁的站点,抓取路径本来就不宽裕,更不该把内鏈入口砍掉。
用日誌驗證,而不是靠猜
想知道蜘蛛有没有走 nofollow 連結,最直接的方式是看服務器日誌。篩選带 rel="nofollow" 的連結對應 URL,观察是否有蜘蛛 User-Agent 訪問,以及訪問频率是否低于同頁面的普通連結。连續观察一段時間,再决定是保留、移除還是換成 robots.txt 規則。
nofollow 是一個關于連結關系的标注,不是抓取開關。站点运营中更稳妥的做法是:把 nofollow 用在确實需要标注關系的地方,把抓取路径和 URL 發現交给清晰的内鏈、Sitemap 和合理的 robots.txt 規則来管理。