網站收錄

大小寫、斜杠與 http/https:同一頁面出現多個地址时先做 URL 归一

核對收錄时,常會發現同一份内容在索引里對應好几個 URL。問题多半不在内容,而在地址寫法不统一:协议、www、结尾斜杠、路径大小寫、預設文件名、參數顺序都可能让一個頁面被拆成多條。本文按“归组—選主地址—收敛”的顺序,說明怎么盘出等價變体,並用 301、canonical 與内鏈统一把它們收到一個地址上。

網站收錄

大小寫、斜杠與 http/https:同一頁面出現多個地址时先做 URL 归一

做收錄核對时经常碰到一種情况:某個頁面看起来已经被收錄,但站内明明只有一個頁面,索引里却能對應出好几個 URL。多數时候不是内容出了問题,而是同一個頁面在對外暴露时用了不止一種地址寫法。

同一個頁面為什么會有多個地址

搜尋引擎是按 URL 分別抓取、分別入库的。只要地址字符串不同,系統就會先把它們当作可能不同的頁面来處理,之後才谈得上判断内容是否重复、要不要合並。URL 归一要做的,就是把指向同一份内容的多種寫法,收敛到一個主地址上。

常见的几類等價變体

主机與协议层面

  • http 與 https 並存,頁面两邊都能打開;
  • 带 www 與不带 www 的域名指向同一套内容;
  • 主域、备用域、舊域名同时可訪問;
  • 預設端口是否顯式寫出,例如 :80、:443。

路径與參數层面

  • 结尾斜杠:/page 與 /page/;
  • 目錄預設文件:/a/ 與 /a/index.html、/a/index.php;
  • 路径大小寫:/Page 與 /page,服務器区分大小寫时這是两個真實地址;
  • 參數顺序與冗余參數:?a=1&b=2 與 ?b=2&a=1,以及 utm 等跟踪參數;
  • URL 编碼差异:中文路径全编碼與部分编碼、空格的 %20 與加号。

先做一轮 URL 盘点

  1. 從服務器訪問日誌或抓取记錄里,按“路径 + 參數”把同一份内容的不同寫法归成一组;
  2. 對每组标注三件事:站内連結用的是哪種寫法、sitemap 里放的是哪種、索引里出現的是哪種;
  3. 選一個主地址。優先選站内已经广泛引用、外鏈較多、语义清晰的寫法,而不是凭個人偏好重選;
  4. 把剩下的變体分類:哪些靠 301 跳轉、哪些只需要改内鏈、哪些留在 canonical 里声明。

主地址定下来之後怎么收敛

  • 301 跳轉:等價變体统一跳到主地址,避免長期用 302 顶替,跳轉方向要一步到位,不要串成多級;
  • canonical 声明:頁面内寫的主地址要和 301 指向同一個,两者方向互相打架时先修一致;
  • 内鏈统一:導航、面包屑、分頁、正文連結、分享按钮都改成主地址,站内信号不一致,收敛會很慢;
  • sitemap 只放主地址:把等價變体一並提交,等于主動扩大分散;
  • 參數類變体:跟踪參數優先從内鏈上清掉,剩下的再靠頁面声明處理。

核對时容易踩的几個坑

  • 只看總量數字,不看具体 URL 分布。归一的成效体現在“同一份内容對應的地址數變少”,而不是某天突然多出多少條;
  • 把有獨立價值的頁面誤当成變体合並。判断等價前先確認内容主体是否真的相同;
  • 假设路径大小寫不敏感。很多服務器上是敏感的,/Page 和 /page 是两個地址;
  • 指望用 robots.txt 收敛地址。屏蔽抓取和地址归一是两件事,屏蔽反而可能让變体停留在索引里。
归一不是删頁面,而是让同一份内容只用一個地址被引用、被抓取。

處理完站内信号後,索引里的變化通常需要一段時間才顯現。核對时可以分两步:先確認 301、canonical、内鏈、sitemap 是否已经指向同一個主地址,再观察變体地址是否逐步减少。如果發現某個變体長期不消失,先回头看它的入站連結和跳轉鏈,而不是反复重复提交。