在搭建蜘蛛池入口頁时,有人會给目标連結统一加上 rel="nofollow",理由大致有两類:一是担心入口頁被判定為連結农场,想提前"自證清白";二是觉得反正入口頁不需要權重,加不加無所谓。结果往往是入口頁能被抓,但目标 URL 迟迟没有請求记錄。所以有必要把 nofollow 到底做了什么、以及不同搜尋引擎怎么對待它,讲清楚。
先分清 nofollow 和 noindex 管的是两件事
這两個标簽经常被混着用,但它們的作用對象不同。
- rel="nofollow" 挂在 a 标簽上,针對的是某一條連結,表達"我不為這個連結背书"。
- meta name="robots" content="noindex" 挂在頁面头部,针對的是目前這個頁面本身,表示不要把它放入索引。
- content="nofollow" 的 robots meta 是頁面級,表示這一頁上的所有連結都不要跟進。
關键点在于:noindex 管的是"這一頁要不要收錄",它並不直接禁止爬虫讀取這一頁上的連結。而 nofollow 管的是"這條連結要不要跟進",它直接影响爬虫是否顺着走過去。如果你希望搜尋蜘蛛從入口頁發現目标 URL,那么第一個要检查的就是連結上有没有多寫 nofollow。
nofollow 現在還算不算硬規則
這是最容易踩坑的地方。早期 nofollow 被当作强指令,爬虫基本不會跟進。後来 Google 在 2019 年把 nofollow 改為"提示(hint)",也就是说它會被纳入判断,但不再是绝對阻断。理论上存在"加了 nofollow 也被抓"的情况。
問题在于,這個"提示"最终是否跟進,取决于搜尋引擎自己的判断。你無法控制它是否把這條連結当作值得爬的信号。把發現 URL 這種强依赖的事情,押在一個"提示"上,本身就不划算。
不同搜尋引擎的差异
- Google:nofollow 是提示,可能仍會抓取,但優先級明顯降低。
- 百度:對 nofollow 的支持相對保守,一般按不跟進處理。
- 其他引擎:多沿用传统语义,视為不跟進。
由于蜘蛛池入口頁通常面向多個搜尋引擎,只要有一個把 nofollow 当硬規則,你的 URL 發現就是残缺的。所以實践上建议:入口頁里用于發現目标 URL 的連結,不要加 nofollow。
入口頁的哪些連結该加、哪些不该加
- 指向目标 URL 的核心連結:不加 nofollow。 這是入口頁存在的意义,加了等于自断路径。
- 頁脚、备案、模板里的外鏈:可以加。 這些不是你要暴露的路径,加上反而能让抓取更集中。
- 广告位、赞助位、用戶投稿中的連結:按規范加 sponsored 或 nofollow。 這属于合規做法。
- 分頁、翻頁、篩選參數連結:可以加 nofollow。 避免把抓取预算浪費在無限翻頁上。
判断标准很简單:這條連結是不是你希望搜尋蜘蛛走過去的那條?是,就不加;不是,就可以加。
几種常见的誤用
除了"全部加 nofollow"之外,還有几種會让 URL 發現失敗的寫法:
- 在 robots meta 里寫了 content="nofollow",结果整頁連結都不跟進,目标 URL 一個都發現不了。
- 用 JS 给連結動態加上 rel="nofollow",服務端返回的 HTML 里没有,但渲染後带上,行為不一致。
- 把 nofollow 和跳轉脚本混用,連結本身指向中轉頁,真正的目标 URL 反而藏在參數里。
- 在入口頁 robots.txt 里對目标路径做 Disallow,這種情况下 nofollow 加不加都没意义,連結根本走不過去。
建议定期抽查入口頁的 HTML 源碼,而不是只看浏览器渲染後的效果。搜尋蜘蛛拿到的是服務端返回的那一份。
怎么確認是不是 nofollow 導致的問题
- 抓一份入口頁的原始 HTML,用 grep 或編輯器搜尋 rel="nofollow",確認核心連結上没有。
- 查看服務器日誌,看搜尋蜘蛛是否請求過目标 URL。如果入口頁有记錄、目标 URL 長期没有,先排查連結属性。
- 做一组對照:同一入口頁结构下,一组連結不加 nofollow,一组加上,观察两邊的目标 URL 請求情况。注意這種對照只能作為參考,不能当作精确實驗。
入口頁上的 nofollow 不是"安全開關",它更像一道闸门。闸门關着的时候,別指望搜尋蜘蛛自己绕過去。想清楚每條連結的用途,再决定加不加。