很多人排查收录问题时会发现:自己明明只做了一个页面,搜索索引里却能看到好几个入口。它们指向同一份内容,只是 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 收敛信号,最后靠日志和索引报告验证。规范地址本身要能正常访问、可抓取、内容稳定,否则任何标注都只是纸面上的声明。