搜尋抓取

同一内容的多條 URL 變体:蜘蛛會顺着哪條路径抓,线索怎么收回

同一頁面出現大小寫、尾斜杠、參數顺序、跟踪參數等多種 URL 變体时,蜘蛛會把它們当成多條线索分別抓取,抓取预算被摊薄,規范版本的抓取节奏也难以稳定。本文從變体的常见来源讲起,說明蜘蛛選擇路径时會參考什么,並给出用跳轉、canonical、内鏈與 Sitemap 把线索收敛到同一地址的做法。

搜尋抓取

同一内容的多條 URL 變体:蜘蛛會顺着哪條路径抓,线索怎么收回

同一個頁面,往往不止一個 URL。大小寫不同、结尾多一個斜杠、參數顺序颠倒、带上一串跟踪參數,甚至 http 與 https、带 www 與不带 www,都能拼出一條新的訪問路径。對用戶来说這些差別無所谓,對蜘蛛来说却是實打實的多條线索:它會当成多個地址分別排队、分別抓取、分別判断。抓取预算被摊薄之後,真正需要更新的頁面反而排到了後面。

變体是怎么長出来的

常见来源有几類,多數不是刻意為之:

  • 服務器對大小寫不敏感,/Page 和 /page 都返回 200;
  • 目錄地址带不带尾斜杠都能打開;
  • 參數顺序、空參數、重复參數被原样保留在連結里;
  • 推廣連結附带的 utm、ref、from 等跟踪參數被内鏈或分享带進站内;
  • 同一套内容同时挂在 http 與 https、www 與裸域上;
  • 分頁、排序、會话 ID 等參數生成了大量近似地址。

蜘蛛顺着哪條走,取决于你先给它哪條

蜘蛛本身没有偏好,它優先走的往往是你自己指得最多、指得最早的那條路径。如果内鏈、Sitemap、外部連結指向的版本不一致,它就會在不同版本之間来回切換:今天抓 A,明天抓 B,两條都被标记為“已發現”,但哪條都没有稳定的抓取节奏。更麻烦的是,如果两條路径返回的 HTML 完全一样又没有規范信号,搜尋引擎需要自己判断谁是主版本,而這個判断未必和你希望的一致。

把线索收敛到一條路径上

目标很明确:让蜘蛛發現的每一條内部线索,都指向同一個規范地址。

  1. 先定一個規范形態。统一协议、域名形式、大小寫、尾斜杠規則,並寫進全站連結生成逻辑,而不是靠事後补丁。
  2. 内部連結只指規范版。導航、面包屑、正文内鏈、分頁連結全部對齐,變体只在确實需要跳轉的场合出現。
  3. 非規范版用 301 收口。大小寫、尾斜杠、www 這類可以完全等價映射的,直接跳到規范地址最干净。
  4. 參數類變体尽量別让它落地。跟踪參數在服務端忽略掉,或统一跳轉到無參數地址;無法忽略的用 canonical 指明主版本。
  5. Sitemap 只列規范地址。混入變体會让“已提交”和“已收錄”的數字長期對不上。
  6. canonical 要自洽。A 頁指向 B,B 頁不能又指回 A;canonical 與跳轉、與内鏈指向不一致时,信号會互相抵消。

動手前先摸清現状

  • 看服務器日誌里带參數、带大寫、带尾斜杠的請求占比,哪些被频繁抓取;
  • 用抓取統計中“重复網頁,所選規范網頁與用戶指定的不同”這類提示定位問题;
  • 站内搜尋一段正文标题,看是否有多條地址返回同样内容;
  • 随机抽几條内鏈,检查它們是否都指向同一形態的地址。
收敛變体不是一次性的清理,而是連結生成規則的一部分。只要站内還在不断产生新的變体,之前做的重定向就會被慢慢稀释。

容易踩的坑

一是把 canonical 当成萬能兜底,内鏈却繼續指向舊地址;二是用 robots 屏蔽參數頁,结果把有用的篩選頁一起挡掉;三是把 301 串成鏈條,跳两三次才落地,反而拖慢抓取节奏。這些做法單看都合理,叠在一起就容易让抓取路径變得又長又乱。

把入口收紧到一條路径,剩下的才是内容质量和更新频率的比拼。抓取资源有限时,路径清晰本身就是一種效率。