很多人排查收錄問题时會發現:自己明明只做了一個頁面,搜尋索引里却能看到好几個入口。它們指向同一份内容,只是 URL 長得不太一样。這類情况不一定立刻带来麻烦,但會让索引归属變得模糊:外鏈、点击和抓取资源被分散到多個地址上,最终哪個版本被收錄就不好控制。
重复 URL 一般從哪来
- 带參數的地址:?utm_source=、?ref=、?from= 這類追踪參數,以及排序、篩選參數。
- 大小寫差异:/About 與 /about 在部分服務器上等價,URL 本身却是两條。
- 尾斜杠:/page 與 /page/ 同时可訪問。
- 預設文档:/page 與 /page/index.html 都能打開。
- 协议與主机名:http 與 https、带 www 與不带 www 各有一套地址。
- 分頁、打印頁、移動版或 AMP 使用獨立地址。
- 會话 ID、追踪 ID 被直接寫進 URL。
先判断:是真重复還是不同頁面
參數只影响展示顺序、不影响内容主体时,通常可以按同一頁面處理;如果參數确實篩選出不同结果集,那就不是简單重复。判断方式可以很直接:把两個 URL 的内容各自抓下来,去掉導航、頁脚和广告位,看主体是否基本一致。
收敛顺序:從源头到信号
- 先改源头連結。内鏈、站点地图、分享按钮、面包屑统一使用規范地址,外鏈能沟通的也尽量指向它。
- 服務端做跳轉。大小寫、尾斜杠、預設文档、协议與主机名這几類差异,首選 301 到規范地址,成本低且信号明确。
- 再處理參數。不影响内容的參數,用 canonical 指向干净地址,或在 robots 中對無意义參數做屏蔽;但別把有獨立内容的參數頁一並屏蔽掉。
- 统一 canonical 标注。每個重复版本都指向同一個規范 URL,且這個 URL 必须可抓取、能返回 200。
- 提交並观察。更新站点地图,用抓取工具確認返回碼與 canonical,再看索引中重复版本是否逐步减少。
几個容易做错的地方
- canonical 指向的地址本身是 302 或 404,等于把信号送给一個不存在的頁面。
- 先用 robots.txt 屏蔽,再指望 canonical 生效。被屏蔽的頁面不會被抓取,canonical 自然也讀不到。
- 多個版本互相 canonical,形成环。
- 把所有分頁都 canonical 到第一頁,後續頁的内容不再被單獨评估。
- 只改了一處,内鏈或站点地图仍是舊地址,重复繼續产生。
處理重复 URL 的目标不是让所有版本都被收錄,而是让搜尋引擎清楚哪個地址才是代表版本,其余版本把信号让给它。
怎么观察有没有收敛
- 用站点限定查询看同一内容的多個地址是否還在。
- 留意索引报告里“重复網頁,所選規范網頁與你不同”這類提示。
- 翻服務器日誌,看蜘蛛是否還在抓無意义的參數地址。
- 用抓取工具確認規范地址返回 200、canonical 正确、頁面可正常渲染。
收尾
重复 URL 很少能一次性解决,尤其是有歷史积累的站点。比較稳妥的做法是:先把源头連結统一,再用 301 和 canonical 收敛信号,最後靠日誌和索引报告驗證。規范地址本身要能正常訪問、可抓取、内容稳定,否則任何标注都只是纸面上的声明。