網站收錄

同一個頁面出現多個 URL 版本:先做归一,再谈重复收錄

同一份内容被 http 與 https、带 www 與不带 www、尾斜杠、index.html 等寫法拆成好几個地址,索引里留下的往往不是你希望的那一版。本文梳理常见的 URL 變体、归一的處理顺序,以及用日誌和报告驗證归一是否生效的方法。

網站收錄

同一個頁面出現多個 URL 版本:先做归一,再谈重复收錄

在抓取統計或服務器日誌里,你可能见過這種情况:同一篇文章對應好几條 URL,參數顺序不同、大小寫不同、结尾多一個斜杠,甚至主机名都不一样。這些地址打開後是同一份内容,但在搜尋蜘蛛眼里,它們是几個各自獨立的 URL。索引里最终挑中哪一版,通常不完全由你决定,所以更稳的做法是在站点层面先把地址归一。

常见的 URL 變体

  • 协议與主机名:http 與 https 並存、带 www 與不带 www、带預設端口與不带端口。
  • 路径寫法:结尾加不加斜杠、是否附带 /index.html 或 /index.php、目錄名的大小寫不同。
  • 參數部分:篩選參數顺序不同、跟踪參數被寫進内部連結、會话 ID 直接拼在地址里。
  • 歷史遗留:改版前的舊路径仍能訪問、CDN 回源地址被頁面引用、測試环境域名偶然被放出到公網。

為什么归一比删内容更優先

多個版本同时被抓取,抓取額度被同一份内容摊薄;外鏈和站内連結分散在几個地址上,頁面获得的信号也被摊薄。更麻烦的是,索引里的選擇並不固定:今天留下带 www 的那一版,過一段時間可能又換成另一個,統計口径随之變化。

URL 归一是“让同一份内容只對應一個地址”,而重复内容處理是“不同内容之間如何取舍”。前者是後者的前提。

推荐的處理顺序

  1. 選定唯一地址,把协议、主机名、路径寫法、參數處理規則寫成規范,並落到模板和构建流程里,而不是靠人工逐個改。
  2. 把其它版本 301 到唯一地址,尽量一跳到位,避免 A→B→C 的鏈式跳轉。
  3. 站内連結、導航、分頁、面包屑、结构化資料里的地址全部換成唯一版本。
  4. 站点地图只放唯一版本,各種變体不要出現在里面。
  5. canonical 可以作為补充声明,但它替代不了 301:canonical 是提示,服務器跳轉是明确指令。
  6. 不要用 robots.txt 去挡變体。挡住抓取後,蜘蛛既看不到跳轉也看不到 canonical,這些地址反而可能繼續留在索引里。

驗證归一是否生效

  • 在日誌里按主机名和路径去重統計,观察變体地址的請求占比是否下降。
  • 用命令行工具查看變体地址的响應碼和 Location 头,確認是一跳 301,而不是 200 或多跳鏈路。
  • 用站内查询或搜尋控制台的網頁报告,看同一份内容對應的地址數量變化。
  • 注意索引更新有滞後,地址替換通常需要數周,不要改完第二天就下结论。

容易踩的坑

  • 以為大小寫無關:部分服務器不区分大小寫,迁移到区分大小寫的环境後,/Page 和 /page 就成了两個地址。
  • 忽略尾斜杠差异:有的框架把 /a 和 /a/ 当作不同资源處理。
  • 同时做了两套归一:301 指向 A,canonical 却指向 B,等于给蜘蛛一個自相矛盾的信号。
  • CDN 或反向代理把回源域名暴露在頁面里,凭空多出一批可抓取的地址。

URL 归一属于一次性工程,做完之後再看重复内容、參數頁、分頁這些话题會清楚很多。先把地址统一,再谈索引里留下哪一版;顺序反過来,往往是事倍功半。