nofollow 不是“別抓我”
在站内連結上加 rel="nofollow" 以後,蜘蛛就不来了吗?多數情况下不會這么简單。nofollow 最初是用来告诉搜尋引擎“這個連結不是投票”,後来變成了一個提示信号。它主要影响連結關系的判断,而不是直接關閉抓取通道。
換句话说,蜘蛛看到 nofollow 連結时,可能會選擇不传递權重、不把它当作推荐,但仍然可能沿着這條連結去發現和抓取目标 URL。尤其是当這個 URL 没有出現在別的地方时,nofollow 連結反而可能是蜘蛛第一次见到它的入口。
把 nofollow 当成抓取预算的阀门,往往會失效;真正能阻止抓取的是 robots.txt 的 Disallow 或服務器层面的限制。
蜘蛛為什么會跟着 nofollow 走
抓取和索引是两件事。爬虫需要先拿到 URL,才會判断頁面内容、canonical、noindex 等信号。nofollow 不阻止 URL 被發現,所以下面几種情况蜘蛛仍可能排队抓取:
- 目标頁面是新的,站内没有其他可爬入口,nofollow 連結成了唯一發現路径;
- 同一批 URL 在多個頁面被 nofollow 連結反复指向,蜘蛛在合並連結關系时仍會记錄這些地址;
- 外鏈带了 nofollow,但搜尋引擎仍可能抓取目标頁,用于判断連結质量和内容相關性;
- UGC 或评论区的 nofollow 連結,蜘蛛為了反垃圾和發現新内容,也會做一定程度的抓取。
因此日誌里看到蜘蛛抓了 nofollow 連結,並不一定是配置失效,而是抓取發現机制在正常工作。
nofollow、robots.txt 和 noindex 的分工
這三個指令经常被混用,其實作用的阶段不同。
- robots.txt Disallow:阻止蜘蛛抓取指定路径,但 URL 仍可能被索引成無摘要结果。适合後台、搜尋结果頁、參數组合等不需要抓取的功能地址。
- noindex:让頁面不被索引,但蜘蛛必须先抓取頁面、讀到 meta 或响應头才生效。适合内容單薄但可訪問的頁面。
- nofollow:處理連結關系,不保證目标 URL 不被抓取。适合广告、赞助、不可信 UGC 和你不愿背书的連結。
如果目标是不让蜘蛛抓取,優先考虑 robots.txt;如果目标是不让頁面進索引,用 noindex;nofollow 放在連結层面,解决的是信任和權重問题,而不是抓取開關。
内鏈里的 nofollow 要慎用
有些站点為了“节省抓取額度”,把篩選參數、分頁、登入註冊等内鏈全部加上 nofollow。這样做常常适得其反:蜘蛛仍然可能抓到這些 URL,但重要頁面的發現路径變窄了,抓取分布變得更难预测。
更稳的做法是分层處理:
- 把纯功能性地址(购物车、结算、用戶中心、站内搜尋结果)放進 robots.txt,减少無效抓取。
- 對不需要出現在索引里的可訪問頁面,使用 noindex,並确保蜘蛛能讀到。
- 對广告、赞助和外部 UGC 連結使用 nofollow,明确關系即可。
- 站内核心導航、文章互鏈和 Sitemap 保持干净可爬,让蜘蛛沿着稳定路径走。
- 定期看服務器日誌,確認蜘蛛實际抓了哪些 URL,再調整規則。
分頁連結通常不建议加 nofollow。如果希望蜘蛛繼續翻到後面的列表頁,保留可爬連結比标记 nofollow 更直接。
用日誌驗證,而不是凭感觉
nofollow 的實际效果會因搜尋引擎和场景而變化。與其假设“加了就不抓”,不如在日誌里看蜘蛛是否訪問了被标记的 URL、訪問频率如何、是否带上了參數。再结合 robots.txt 和 noindex 做小范围測試,观察抓取路径的變化。
站点运营里,抓取管理更像分层疏導:该拦的用 robots.txt,该去索引的用 noindex,该表明關系的地方用 nofollow。把每個指令放在它擅長的环节,蜘蛛的路径才會更清楚。