搜尋抓取

同一個頁面十條地址:URL 變体把蜘蛛引向重复抓取

同一個頁面常常存在多個可訪問地址:追踪參數、大小寫、结尾斜杠、http 與 https 都會各自生成一條 URL。這些變体會摊薄抓取份額,也让内容信号分散。本文梳理常见變体類型、收敛顺序,以及如何用日誌和内鏈检查回头驗證。

搜尋抓取

同一個頁面十條地址:URL 變体把蜘蛛引向重复抓取

站内連結里多一個問号、结尾多一個斜杠、大小寫換一下,浏览器都能打開同一個頁面,但對蜘蛛来说,這可能是好几條不同的 URL。抓取次數是有限的,重复地址越多,真正需要被發現的頁面分到的机會就越少。

一個頁面為什么會變成多個地址

變体多數不是刻意造成的,而是模板寫法、第三方追踪工具和服務器配置叠在一起的结果。常见的可以归成三類。

參數類變体

  • 追踪參數:utm_source、from、ref 之類被直接寫進源碼連結里。
  • 會话與缓存參數:sessionid、sid、随机數,同一次訪問生成不同地址。
  • 排序與篩選:?sort=price_desc、?color=red,组合起来能生成几十上百條。
  • 站内搜尋:?s=關鍵詞,用戶搜什么就产生什么 URL。
  • 分頁與视图:?p=1 與不带參數的首頁内容相同;打印頁、分享頁、评论跳轉頁各自獨立。

這些地址在浏览器里是正常功能,問题出在它們被当成連結寫進了頁面源碼,蜘蛛顺着爬就會一路展開。

格式類變体

  • 大小寫不同:/Product 與 /product。
  • 结尾斜杠:/about 與 /about/。
  • 預設首頁寫法:/index.html、/index.php 與 /。
  • 多重斜杠或路径中的冗余符号:/news//123。
  • 中文或特殊字符是否统一编碼方式。

服務器往往對它們一视同仁,但 URL 字符串不同,在蜘蛛那里就是不同地址。

协议與主机名變体

  • http 與 https 同时可訪問。
  • 带 www 與不带 www。
  • 獨立的移動域名與主站域名指向同一套内容。
  • 源站域名與 CDN 域名都能直接打開頁面。

這一類通常需要在服務器层做统一跳轉,否則蜘蛛會分別建立抓取记錄。

變体多了會怎样

最直接的影响是抓取份額被摊薄:同一份内容占用了多條 URL 的額度,新頁面和深层頁面就排在後面。其次,外鏈和站内信号被拆散到不同地址上,识別主版本的成本變高。日誌也會變得难看,同一篇内容在报表里出現多次,容易把真實的抓取分布讀错。

判断标准可以很简單:同一段内容,如果有两個以上能被蜘蛛抓到的地址,就要明确選出唯一的正式地址。

怎么收敛

  1. 選定唯一的規范地址,把协议、主机名、路径大小寫、是否结尾斜杠都寫進站点規則。
  2. 在服務器层用 301 把其它變体永久跳到規范地址,避免用 302 或 JS 跳轉代替。
  3. 源碼里的導航、面包屑、正文内鏈、相關推荐,全部只寫規范版本,保持寫法一致。
  4. canonical 指向規范地址,並且與内鏈、Sitemap 中的寫法一致,不要三處各说各话。
  5. 功能性參數頁(篩選、排序、站内搜尋)给明确策略:限制抓取或标记 noindex,別让它們進入抓取主路径。
  6. 追踪參數不要出現在源碼連結里,需要統計时在点击时拼接。
  7. 打印頁、分享頁、分頁之間不要互相連結成环。

回头驗證

從服務器日誌里按路径聚合,看看同一篇内容是否有多個地址被高频抓取;用站内抓取工具掃一遍全站内鏈,找出仍指向非規范地址的連結;检查 Sitemap 里是否混進了带參數的 URL;再观察篩選頁和站内搜尋頁,蜘蛛是不是顺着參數一路走了下去。

這類問题不需要一次改完。先把被連結最多、被抓取最频繁的几個變体收敛掉,日誌里重复地址的占比通常就會下降。抓取總量不會因此暴涨,但會更集中地花在你希望被發現的頁面上。