搜尋抓取

蜘蛛抓取前的 URL 合並:哪些地址會被当成同一個頁面

同一篇内容挂在不同 URL 上,蜘蛛會分別抓取,既浪費抓取预算,也容易让頁面互相竞争。這篇從协议、www、末尾斜杠、參數等常见變体说起,讲清蜘蛛合並 URL 的逻辑,以及如何用 301、canonical、内鏈和 Sitemap 把地址收口到規范版本。

搜尋抓取

蜘蛛抓取前的 URL 合並:哪些地址會被当成同一個頁面

很多站点在日誌里會看到蜘蛛反复抓同一批内容,但 URL 看起来又不太一样:有的带 www,有的不带;有的是 http,有的是 https;有的末尾多一個斜杠;有的後面跟着一串跟踪參數。對蜘蛛来说,這些地址在它没有拿到明确合並信号之前,往往會被当成不同 URL 分別處理。

蜘蛛不會自動帮你合並所有地址

搜尋蜘蛛發現一個 URL 後,會把它放進抓取队列。如果同一個頁面通過内鏈、Sitemap 或外鏈被暴露成多個地址,蜘蛛就可能分別抓取。抓取预算有限时,這些重复抓取會挤占真正需要更新的頁面。更麻烦的是,多個地址返回相同内容,蜘蛛還要判断哪個是主版本,判断成本高,结果也不一定符合你的预期。

常见的重复地址有哪些

  • 协议不同:http 與 https 同时可訪問。
  • 主机名不同:带 www 和不带 www 都能打開。
  • 路径细节:末尾斜杠、大小寫、多余的目錄层級。
  • 參數差异:跟踪參數、排序參數、會话 ID、来源标记。
  • 功能頁副本:打印頁、AMP 頁、移動版獨立地址。

這些變体不一定都會被大量抓取,但只要内鏈或 Sitemap 里存在多個版本,蜘蛛就有机會走到。尤其是參數 URL,如果站内連結生成規則不统一,蜘蛛會顺着不同參數组合爬出很多相似頁面。

给蜘蛛明确的合並信号

最直接的方式是让非規范地址跳轉到規范地址。永久跳轉用 301,不要用 302 替代,也不要让跳轉鏈太長。每一步跳轉都會消耗抓取资源,蜘蛛也可能在中間停下。

如果因為业務原因不能做跳轉,可以在頁面头部用 canonical 标簽指向規范地址。canonical 是建议信号,不是强制指令,蜘蛛會结合内鏈、Sitemap、重定向一起判断。所以不能只在模板里加一行 canonical,却繼續在内鏈和 Sitemap 里分發舊地址。

内鏈要统一到規范地址

站内連結是蜘蛛發現 URL 的主要路径。導航、面包屑、列表頁、相關推荐、分頁,最好都指向同一個規范版本。如果導航里用不带 www 的地址,正文里又用带 www 的地址,蜘蛛就會收到两套入口。检查时可以随机抽取一些栏目頁和詳情頁,看連結是否统一。

Sitemap 只放規范 URL

Sitemap 是给蜘蛛的清單,不是把站内所有地址都倒進去。只提交規范 URL,能减少蜘蛛對重复版本的注意力。參數頁面、篩選頁面、打印頁,如果没有獨立搜尋價值,不建议放進 Sitemap。若确實需要保留,至少确保它們通過 canonical 或 robots 規則與主版本区分開。

服務器层面容易忽略的细节

有些重复地址来自服務器配置。比如 http 没有强制跳 https,带 www 和不带 www 都返回 200,末尾斜杠和不带斜杠都能打開。這些配置看起来方便,實际會让蜘蛛看到多個可抓取版本。可以在服務器或 CDN 层做统一跳轉,但要注意跳轉目标本身可訪問,避免循环或跳到 404。

另外,服務器不稳定时,蜘蛛可能抓取失敗並稍後重试。如果同一内容有多個地址,重试的地址也可能分散,進一步增加抓取波動。保持服務器响應稳定,對 URL 收敛也有帮助。

怎么检查和收敛

  1. 看服務器日誌,篩選蜘蛛訪問记錄,按路径和參數統計重复抓取較多的地址。
  2. 用搜尋资源平台的抓取統計和索引覆盖报告,观察是否有重复頁面被收錄。
  3. 抽查内鏈、Sitemap、canonical 是否指向同一規范地址。
  4. 對確認的重复地址做 301 或 canonical,並观察後續抓取變化。
  5. 改版或換模板後,重新检查連結生成規則,避免舊地址回流。
URL 收口不是做一次就結束。模板、栏目、參數規則、服務器配置任何一處變化,都可能让重复地址重新出現。定期看日誌和抓取資料,比一次性設定更可靠。

總之,蜘蛛抓取的是你暴露给它的地址,而不是你心里以為的那個地址。把規范 URL 定清楚,在内鏈、Sitemap、跳轉和 canonical 上保持一致,蜘蛛才能把抓取精力放在真正需要更新的頁面上。