搜尋抓取

大小寫、參數顺序與结尾斜杠:蜘蛛眼里這是几條 URL

同一份内容如果存在多個可訪問的地址,蜘蛛會按 URL 字符串把它們当成多條线索分別排队。本文梳理常见的“一頁多址”情形、它带来的抓取代價,以及用跳轉、canonical、内鏈和 Sitemap 收敛的具体做法。

搜尋抓取

大小寫、參數顺序與结尾斜杠:蜘蛛眼里這是几條 URL

同一份内容,如果存在多個都能正常打開的地址,蜘蛛會把它当成多條线索分別排队。判断依據不是頁面里寫了什么,而是 URL 字符串本身:字符不同,就是两條记錄。

蜘蛛認的是字符串,不是内容

抓取队列里的键就是 URL。大小寫不同、结尾斜杠有無、參數顺序颠倒,在队列里都是獨立條目。蜘蛛通常不會先抓回来對比正文再合並,而是各自安排一次抓取。结果是同一個頁面被反复取回,抓取額度被摊薄在重复地址上。

常见的“一頁多址”

  • 域名變体:example.com 與 www.example.com、http 與 https 四種组合都能訪問。
  • 结尾斜杠:/page 與 /page/ 都返回 200。
  • 預設文件名:/ 與 /index.html、/default.aspx 同时存在。
  • 參數顺序:?a=1&b=2 與 ?b=2&a=1 指向同一结果頁。
  • 追踪參數:utm_source、spm、from 之類只在来源頁出現的參數。
  • 大小寫混用:/Article/123 與 /article/123。
  • 篩選與排序:排序字段、每頁條數等參數组合出的地址。

多址並存带来的代價

第一是重复消耗抓取次數。站点規模越大,重复地址占比越高,留给新頁面的額度就越少。

第二是信号被拆散。外部連結、站内連結分別指向不同版本时,收到的指向被打到几個地址上,任何一個版本看起来都不如實际重要。

第三是日誌判断變难。同一篇文章在日誌里出現多行,統計“被抓了多少次”“多久重訪一次”时容易得出错誤结论,進而誤判抓取节奏。

怎么把地址收敛成一條

  1. 先定規范版本。域名带不带 www、用 http 還是 https,只保留一種,並確認證书、DNS、CDN 都跟着走。
  2. 其余版本做 301 永久跳轉。優先用 301 而不是 302,跳轉目标直接指向最终地址,避免鏈式跳轉。
  3. 站内連結统一寫成規范版。導航、面包屑、正文内鏈、分頁連結都別混用带斜杠和不带斜杠的寫法。
  4. Sitemap 只放規范地址。不要為了“多递线索”把變体地址也寫進去,那等于主動制造重复。
  5. canonical 作為兜底。当跳轉难以實施时,用 canonical 指向規范版;它和 301 冲突时,通常跳轉的優先級更高。
  6. 追踪參數單獨處理。頁面上生成的分享連結尽量在跳轉层剥掉參數;robots.txt 管不了參數顺序問题,別指望它来兜底。
一個常被忽略的细节:蜘蛛抓取时通常不能区分 /Article/123 和 /article/123,但服務器可能能——如果服務器對大小寫不敏感,两個地址都會返回 200,重复就此产生。

上线前快速自检

  • 把規范地址換掉大小寫、加减结尾斜杠,逐一訪問,看是否都跳到同一個地址。
  • 在日誌里挑一個热门頁面,看它有多少種寫法被請求過。
  • 抽查 Sitemap 中的 URL,是否與頁面内鏈寫法一致。
  • 检查參數頁是否被站内連結大量引用,必要时加 noindex 或限制入口。

URL 規范化不是一次性的整理工作,而是每次改版、上线新模块、接入新統計工具时都要過一遍的环节。地址收敛得干净,抓取額度才能真正用在没被抓過的頁面上。