打開索引一看,几個頁面的标题和摘要几乎一样,点進去内容也相同,区別只在地址:一個是 http,一個是 https;一個带 www,一個不带;一個有尾斜杠,一個没有。這類情况通常不是搜尋引擎判断错了,而是站点自己同时輸出了多個可用地址,蜘蛛只好每個都抓一遍、都判一遍。
處理這類問题,關键不是「删掉多余頁面」,而是给同一份内容确定唯一地址,並让站内所有出口都指向它。下面按從内到外的顺序梳理。
先確認:這些 URL 是不是同一份内容
動手之前先做一次比對,避免把真正不同的頁面誤合並:
- 正文、标题、主要段落是否一致;
- 只是列表排序、篩選條件不同,還是内容本身不同;
- 是否一個版本带了額外模块,例如打印版、移動版、會话版。
如果只是排序參數不同而主体内容一致,一般可以按同一内容處理;如果篩選後确實呈現了不同的商品集合或文章集合,則需要單獨评估,不要一刀切跳轉。
常见的 URL 變体来源
- 协议:http 與 https 並存,且两邊都能打開;
- 主机名:www 與裸域都能訪問;
- 尾斜杠:/a 與 /a/ 都返回 200;
- 大小寫:/Page 與 /page 都能打開;
- 預設文件:/a/ 與 /a/index.html 同时可訪問;
- 追踪參數:?utm_source=… 被大量外鏈和投放带進来;
- 排序與分頁參數:?sort=、?page= 被内鏈反复輸出;
- 會话與打印版本:?sid=、/print 等自動生成的地址。
這些變体往往不是有人刻意添加,而是服務器配置、模板輸出和歷史遗留叠加的结果。先找到来源,再决定怎么收。
收口顺序:站内輸出、跳轉、canonical
第一步:统一站内連結的輸出
先让網站自己不再制造變体。導航、面包屑、正文内鏈、分頁連結、sitemap 里的地址,全部使用同一個格式。如果站内連結一半带尾斜杠、一半不带,蜘蛛就會顺着這些連結繼續發現两套地址。這一步成本最低,收益也最直接。
第二步:用 301 把變体指向唯一地址
确定唯一地址後,让其余寫法做 301 跳轉,並且一跳到位,不要 http→不带 www→带 www→https 這样串成多跳。多跳鏈路會拉長抓取路径,也容易在中間环节丢失參數或丢失路径。跳轉目标應当是最终可直接打開的地址。
第三步:canonical 作為补充,而不是替代
canonical 是提示,不是强制指令。它能帮助搜尋引擎理解你的偏好,但不會阻止變体地址被訪問。更要注意的是,如果一個頁面被 robots.txt 屏蔽了抓取,搜尋引擎看不到頁面里的 canonical,也就無法據此合並。所以顺序上應当是:先能正常訪問並跳轉,再用 canonical 表達偏好。
參數部分的處理
追踪參數和排序參數的處理要分情况:能通過模板改造去掉的,優先改造;無法去掉的,可以在搜尋平台後台配置參數忽略規則;不建议用 robots.txt 直接屏蔽带參數的地址,因為屏蔽後頁面無法被抓取,其中的 canonical 和内容信号也一並丢失。
一份可执行的自检清單
- 站内所有内鏈是否使用统一格式,是否還有歷史遗留的舊寫法;
- 變体地址是否都有 301,且跳轉鏈不超過一跳;
- canonical 是否自指,且與最终可訪問地址完全一致;
- sitemap 中是否只保留規范地址,是否残留變体;
- 抓取日誌里,變体地址的訪問量是否在收口後逐步下降;
- 外鏈和投放連結是否還在使用带參數的舊地址。
收口之後怎么观察
可以同时看三個地方:服務器日誌中變体地址的請求占比是否下降;搜尋平台的索引狀態中,重复版本是否逐步向規范地址靠拢;站内搜尋或站内入口是否還在輸出變体連結。索引變化通常需要一段時間,不必因為一两天没動静就反复改動配置。
URL 收口不是一次性動作。改版、換 CDN、新增頁面模板、開啟新的投放渠道,都可能重新产生變体。建议把「站内連結格式」和「跳轉規則」纳入上线检查項,而不是等到索引里出現重复頁面才回头處理。