搜尋抓取

搜尋蜘蛛抓取:URL 規范化不一致造成的重复入口梳理

同一頁面因协议、大小寫、尾斜杠、參數顺序等差异被拆成多個入口,是抓取浪費的常见来源。本文梳理重复入口的识別方法、日誌自查步骤與收敛手段,並說明内鏈、Sitemap 與重定向如何配合,让被抓取的地址尽量唯一、可预测。

搜尋抓取

搜尋蜘蛛抓取:URL 規范化不一致造成的重复入口梳理

抓取量上不去时,很多人第一反應是内容不够、外鏈不足,但日誌里更常见的情况是:同一個頁面被拆成好几個地址,蜘蛛每發現一個新寫法就当成新入口重新走一遍。抓取预算被這些重复入口摊薄後,真正需要更新的頁面反而排不上队。

常见的重复入口形態

  • 协议與主机名:http 與 https、带 www 與不带 www 都能打開,且都返回 200。
  • 大小寫與路径寫法:/About、/about、/about/ 三種寫法各占一個入口。
  • 預設文件名:/list 與 /list/index.html 同时可訪問。
  • 參數顺序與冗余參數:?a=1&b=2 與 ?b=2&a=1 被视為两條 URL,跟踪參數、會话 ID 也會額外生成入口。
  • 端口與末尾斜杠:带預設端口、带多余斜杠的地址被保留成獨立入口。

這些形態單看都不起眼,叠在一起就可能把一個栏目放大成几十條可抓取地址。

從日誌里確認重复

  1. 取一段完整日誌,按路径部分做归一化:统一小寫、去掉末尾斜杠、去掉查询串中的跟踪參數。
  2. 按归一化後的路径分组,統計每组内的實际 URL 數量和各自的抓取次數。
  3. 把抓取次數高但归一化後属于同一组、且返回狀態碼都是 200 的地址挑出来,這些就是優先處理對象。
  4. 對照頁面實际内容,確認它們确實是同一份内容,而不是被誤判的相似頁面。

如果归一化後同一路径對應的 URL 超過两條,通常說明規范化策略没有落地,或者内鏈里混用了多種寫法。

收敛做法

選定唯一形態

站点需要先定一條規則:用哪個协议、是否带 www、是否保留末尾斜杠、參數是否排序。規則定好之後,其余寫法统一用 301 指向唯一形態。重定向要直接指到最终地址,避免多次跳轉拉長鏈路。

内鏈與 Sitemap 同步

  • 站内連結、導航、面包屑、分頁按钮全部改成規范寫法,不要依赖跳轉纠错。
  • Sitemap 只提交規范地址,避免同一頁面在站点地图里出現多次。
  • 頁面上的 canonical 指向規范地址,與 301 的目标保持一致,不要互相矛盾。
用 robots.txt 屏蔽重复地址看起来省事,但被屏蔽的 URL 如果仍被内鏈引用,蜘蛛會看到連結却無法抓取,反而增加不必要的探测。能靠跳轉和連結统一解决的,不要用屏蔽。

容易踩的坑

  • 只改了首頁連結,栏目頁、标簽頁、歷史文章里仍留着舊寫法。
  • 用 JavaScript 跳轉代替 301,蜘蛛不一定执行,舊入口會繼續存在。
  • canonical 寫成了相對路径或指向另一個重复地址,信号互相抵消。
  • 分頁、篩選參數直接放開给蜘蛛,頁面上又生成大量组合連結。

驗證與後續观察

處理完成後,不要只看一天的資料。可以在两周内重复一次日誌归一化,观察重复组的數量是否下降、規范地址的抓取占比是否上升、原先被挤占的詳情頁是否開始出現抓取记錄。同时抽查服務器返回,確認跳轉鏈没有變長、没有出現循环跳轉。規范化的收益不會立刻体現在排名上,但它能让抓取行為更可预测,後續做 Sitemap 更新、新頁面入口铺设时也更容易判断效果。