同一个页面,往往可以拼出好几条 URL:带不带尾斜杠、域名前有没有 www、用 http 还是 https、路径里字母大小写不同。对用户来说这些地址打开后可能看到同一屏内容,但对搜索引擎来说,它们先被当成不同的 URL 来抓取和存储。最后会不会在索引里留下多条,取决于站点有没有把信号说清楚。
常见 URL 变体先列出来
排查之前,先把站点真实存在的变体列清楚。比较常见的包括:
- 协议:http 与 https 并存,或 https 证书切换后旧地址仍可访问。
- 主机名:example.com 与 www.example.com 都能打开,或者带默认端口。
- 尾斜杠:/page 与 /page/ 都返回 200。
- 大小写:/Page、/page、/PAGE 在部分服务器上被当成不同路径。
- 参数:追踪参数、排序参数、会话 ID 生成大量地址。
- 索引文件:/index.html 与目录根地址同时可访问。
这些变体不一定都会进索引,但如果服务器对每一条都返回 200,且没有规范信号,搜索引擎就可能分别抓取、分别评估,甚至留下重复版本。
服务器层先做 301,而不是只靠 canonical
最稳的收口方式是在服务器层把变体 301 到规范地址。例如把所有 http 请求跳到 https,把裸域跳到 www,把带尾斜杠和不带尾斜杠统一成一种。301 会让抓取和索引信号沿着跳转走到同一个目标,比页面里的 canonical 更直接。
canonical 仍然有用,尤其是当 URL 必须保留、不能直接跳转时。它相当于在页面里声明“这一组地址里,请以这个为准”。但要注意:canonical 是提示,不是强制命令。如果服务器同时返回 200、内链又混着指向多个变体,canonical 的效果会被削弱。
能 301 的尽量 301,不能 301 的再用 canonical 收口,两者不要互相打架。
内链、sitemap 和提交入口要统一
很多重复 URL 不是服务器造出来的,而是站内链接自己带出来的。导航、面包屑、分页、文章正文里的链接,如果同一个目标有时带尾斜杠、有时不带,蜘蛛就会沿着不同地址反复抓。建议做一次站内链接扫描,把指向同一页面的链接统一成规范形式。
sitemap 里也只放规范 URL。不要把某一页的各种变体都塞进去,那等于主动告诉搜索引擎“这些地址都值得看”。提交入口同样如此,提交规范地址即可,不必把重定向前的旧地址反复提交。
按这个顺序排查
- 先确认规范地址是哪一个:协议、主机名、路径、尾斜杠分别定成什么。
- 用抓取工具或日志检查变体是否返回 200。返回 200 的变体要优先处理。
- 能 301 的做 301,并确认跳转链只有一跳,不要 A 跳 B 再跳 C。
- 不能跳转的页面,检查 canonical 是否指向自身或规范地址,且不是互相指向。
- 检查站内链接与 sitemap,是否混入了变体地址。
- 观察一段时间抓取日志,看变体请求是否减少,而不是只看索引量数字。
哪些情况不用太紧张
不是所有变体都会造成重复收录。如果服务器已经 301、canonical 明确、内链统一,搜索引擎通常会自己合并信号。偶尔被发现的参数地址,如果内容与规范页一致且没有外部链接指向,也可能只是被抓取后不索引。真正要盯的是那些持续返回 200、有内链或外链支持、内容又和规范页高度相似的变体。
另外,URL 规范化不是一次做完就结束的事。改版、换域名、加 CDN、调整路由规则,都可能让旧变体重新可访问。把规范地址写进开发和运维清单,比事后从索引里清理更省力。