有时会发现,同一个页面在索引里以几种不同的 URL 出现:有的带大写字母,有的少了结尾斜杠,有的后面还跟着 index.html。它们指向的内容一模一样,却各自占着一个索引位置。结果是权重被摊薄,统计也对不上。这类问题并不神秘,本质是 URL 规范化没有统一,再加上搜索引擎会把每种写法先当成独立地址来抓取。
先确认:是被抓取,还是被收录
这一步很容易混淆。服务器日志里出现某个 URL,只说明它被抓取过;索引里能查到它,才算进了收录。排查时按这个顺序来:
- 用 site: 查询或站长平台,看变体 URL 是否真的能单独被搜到;
- 看站长平台的覆盖率报告,变体是已收录,还是显示为重复网页、未选定规范网页;
- 查服务器日志,确认这些变体是从哪里被发现的,是内链、外链、sitemap 还是参数拼接。
如果变体只是被抓取、并没有被收录,处理起来简单得多;如果已经各自收录,就需要等搜索引擎重新判断规范版本。
常见的 URL 变体有哪些
- 大小写:/About 与 /about 在多数服务器上是两个地址;
- 结尾斜杠:/news 与 /news/ 可能都能正常访问;
- 默认文档:根目录与 /index.html、/index.php 同时存在;
- 重复斜杠:/a//b 这类由拼接错误产生的地址;
- 协议与主机名:http 与 https、带 www 与不带 www;
- 参数与追踪码:utm 参数、会话 ID、排序参数。
这些变体只要都能返回 200,搜索引擎就有理由把它们当作不同的 URL 去抓取和评估。
收敛的顺序:从服务器开始,而不是从 canonical 开始
- 服务器层面统一跳转。先选一个唯一形式,把其他写法 301 过去。大小写、结尾斜杠、默认文档、协议与主机名都放在这一步处理,这是最彻底的做法。
- 站内链接保持一致。内链、导航、面包屑、分页以及后台自动生成的链接,都要使用规范形式。内链是搜索引擎发现 URL 的主要来源,自己产出的变体越多,收敛越慢。
- canonical 只做兜底。当某些变体无法用跳转处理,比如带参数的页面,再用 canonical 指向规范 URL。注意它是提示,不是强制指令,应写在跳转之后。
- sitemap 只提交规范形式。把变体也写进 sitemap,等于主动告诉搜索引擎这些都是独立页面。
- 外链逐步修正。外部链接指向哪个版本你控制不了全部,但可以在跳转层兜住,避免出现新的变体。
几个常被忽略的细节
- 跳转链不要超过一跳,A 到 B 再到 C 的形式会浪费抓取,也让规范判断变模糊。
- 规范 URL 的内容要真的和变体一致,内容有差异时,搜索引擎可能不采纳你的指向。
- HTTPS 迁移或换域名时,旧地址的跳转要长期保留,不要只放几个月。
- CDN 或反向代理有时会改写 URL,排查时记得把这一层也算进去。
URL 规范化的目标不是让变体彻底消失,而是让搜索引擎明确知道哪一个版本才算数。只要跳转、内链、canonical、sitemap 四个环节指向一致,收敛只是时间问题。
自查清单
- 唯一规范形式是否已经确定,并写成文档?
- 服务器是否对所有变体做了 301,而不是 302 或直接返回 200?
- 站内链接是否全部使用规范形式?
- canonical、sitemap、内链是否指向同一个 URL?
- 改完之后是否看过日志,确认变体的抓取在减少?
整个过程不需要额外手段,把入口收干净,剩下的交给正常的抓取周期即可。收录版本统一之后,统计和排名通常也会跟着稳定下来。