同一份内容被多个 URL 指向,是收录问题里最常见、也最容易反复出现的一类。它们通常不是刻意生成的,而是站点在多年迭代中自然留下的:早期用大写目录名的链接、带 index.html 的旧入口、http 与 https 并存时期的残留、加过跟踪参数的活动页。这类变体往往都能正常打开、返回 200,所以从表面看「没有问题」,但它们会稀释页面信号,也让索引里出现多个长相相似的地址。
先确认变体是从哪来的
不要急着动手改,先做一次采样,把同一份内容可能出现的地址形式列全:
- 主机名与协议:http 与 https、www 与非 www 是否各自能独立打开,还是统一跳转到同一个形式。
- 路径大小写:服务器是否区分大小写,同一路径的大小写变体是否都返回 200。
- 结尾斜杠:目录形式与带斜杠形式是否都能访问,是否有一方 301 到另一方。
- 默认文件名:目录首页与加上 index.html、default 之类的完整路径是否并存。
- 参数:跟踪参数、排序参数、会话参数,以及参数顺序不同是否会产生新地址。
这一步的目的是分清哪些真正需要处理,哪些其实已经被服务器跳转到统一形式了。已经一跳 301 到首选地址的,通常不需要额外动作。
三种处理方式,优先级不同
常见手段有三种,但作用强度并不一样:
- 服务器跳转:301 到首选形式,是最明确的做法。前提是只跳一跳,不要出现 http 跳到 www、再跳到 https、再跳到带斜杠的连环跳。
- canonical:在每个变体页面上指向同一个首选地址。它是建议而非指令,跨域或与跳转冲突时可能被忽略。
- 屏蔽抓取:robots meta 或 robots.txt 只适合参数型、本身没有独立价值的变体。对已经有外链指向的地址做屏蔽,往往只会让信号更乱。
顺序上建议先用跳转统一、再用 canonical 兜底,最后才考虑屏蔽。反过来做,容易出现「被屏蔽的地址仍有外链、首选地址反而没人抓」的局面。
核对顺序
- 从抓取日志里筛出同一路径的所有变体,确认实际被抓取的是哪几个。
- 逐个测试跳转链,把多跳压成一跳,并确认没有循环。
- 检查每个变体页面的 canonical 是否指向同一地址,首选地址是否自指向。
- 检查站内链接、面包屑、分页、站点地图,是否都统一使用首选形式。
- 检查外链是否仍指向旧变体;能联系修改就改,不能改也不必强求。
- 站点地图里只保留首选地址,不要新旧混放。
跳转与 canonical 表达的是同一件事:谁是首选。两者不一致时,搜索系统会自己判断,结果未必是你想要的。
改完之后看什么
整理完成后,观察日志里首选形式是否成为主要抓取对象,以及索引中变体是否逐渐减少。这个过程可快可慢,取决于变体自身的抓取频率与外链情况。如果索引里仍保留变体,可以在索引报告或搜索结果中看到「重复网页,系统选择的规范网页与用户指定的不同」一类的提示,这时要回头检查 canonical 与跳转是否真的对齐,而不是继续加更多地址去覆盖。
另外要提醒的是,URL 规范化不是一次性的工作。新上线的栏目、改版后的路径、投放用的带参链接,都会不断引入新的变体。把它当成日常巡检中的一项,比攒到问题明显时再做大清理更容易维持。