搜尋抓取

URL 大小寫、结尾斜杠與參數顺序:一個頁面被拆成好几個地址

蜘蛛把 URL 当作字符串處理,同一篇内容存在多種寫法时,抓取次數和站内信号會被摊薄。本文梳理重复地址的常见来源,並给出一套可执行的顺序:先定規范形式,再统一站内出口,最後用 301 與 canonical 收敛,附上驗證方法與容易踩的坑。

搜尋抓取

URL 大小寫、结尾斜杠與參數顺序:一個頁面被拆成好几個地址

在蜘蛛眼里,URL 首先是一串字符串,而不是“這個頁面”。所以当同一篇内容在網上存在好几個地址时,蜘蛛不會自動帮你合並——它會分別排队、分別抓取,把原本可以集中在一個地址上的抓取次數和站内信号摊薄。

重复 URL 通常從哪几個地方冒出来

  • 协议與主机名:http 與 https、带 www 與不带 www 同时可訪問,且互相之間没有跳轉。
  • 大小寫:/About/Us 和 /about/us 在多數服務器上會被当成两個不同路径。
  • 结尾斜杠:/list 與 /list/ 返回同一份内容。
  • 預設首頁文件:/index.php、/index.html、/ 各自返回一次 200。
  • 參數顺序與無用參數:?a=1&b=2 與 ?b=2&a=1;跟踪參數、會话 ID、来源标记。
  • 排序與视图參數:按時間排序、按價格排序、打印頁、纯文本頁。

這些形態單獨看都不致命,但如果站内連結、Sitemap、canonical 各用一套寫法,蜘蛛拿到的就是互相矛盾的信号。

為什么值得花時間收拾

一是抓取次數分散。同一個頁面的多個地址都要抓一次,服務器也要多處理几次請求,對资源有限的小站不划算。二是信号分散。外鏈、内鏈、分享連結如果指向不同形態,頁面很难形成一個清晰的“主地址”。三是分析失真:日誌里的 URL 形態太多,你會誤判哪些頁面真的被抓得少。四是维護成本,改版时改了規范形式,舊形態的跳轉没跟上,就會出現新的重复。

處理顺序:先定規范,再统一,最後收敛

  1. 先确定唯一規范形式:選一個协议、一個主机名(www 或非 www)、统一小寫、统一是否带结尾斜杠。定了就不再改。
  2. 站内所有出口统一:導航、列表、正文内鏈、分頁、Sitemap、RSS、站内搜尋的跳轉地址,全部按規范形式生成。這一步比做跳轉更重要,因為蜘蛛主要是顺着連結走的。
  3. 其他形式做 301:舊域名、舊路径、大寫地址、带預設文件名的地址,一次性永久跳轉到規范地址。避免 302 換成 301、避免跳轉鏈一串接一串。
  4. 無法跳轉的用 canonical:跟踪參數、排序參數這類不能直接 301 的,用規范連結标簽声明主地址,同时尽量別在站内大量暴露這些參數連結。
  5. 核對 Sitemap:Sitemap 里只放規范 URL,不放參數版、也不放被跳轉的舊地址,否則等于自己制造矛盾。
  6. 驗證:抽查核心頁面的响應,看跳轉是否一步到位、狀態碼是不是 301、返回内容是不是規范頁。

几個常见坑

  • canonical 指向的地址本身被 noindex 或返回 404,等于把信号指向空處。
  • Sitemap 提交的是 A 形態,内鏈用的是 B 形態,蜘蛛两邊都要抓。
  • CDN 或缓存层把大小寫不同的請求分別缓存,導致同一内容有多份缓存。
  • 跳轉鏈過長,A→B→C→D,每次都要多一個往返。
  • 參數頁互相 canonical,最後谁也说不清主地址是谁。

怎么確認自己做對了

  • 從服務器日誌里按路径形態筛一遍,看是否還有大寫、双斜杠、带 index 的請求被大量抓取。
  • 随机抽 10 個核心頁面,手動把地址改成“错誤形態”,看是否一步 301 到規范地址。
  • 對比 Sitemap 里的 URL 和頁面内鏈的 URL,两者應完全一致。
  • 留意新上线的功能:分頁、分享、導购參數最容易带進新的重复形態。
URL 規范化不是一次性的整理,而是一條持續维護的底线:只要站点還在加功能、改结构,新的重复地址就會不断冒出来。