同一条页面,如果被搜索引擎看到过 https://www.example.com/About/ 和 http://example.com/about 两个写法,而两者都返回 200,索引里就很可能留下两条记录。收录数量看着多了一条,实际是同一个页面被拆成了两份。
URL 变体通常来自这几处
- 协议:http 与 https 是否都还能直接打开
- 主机名:带 www 和不带 www 是否都能访问
- 路径大小写:/About 与 /about
- 结尾斜杠:/about 与 /about/
- 参数顺序与冗余参数:?a=1&b=2 与 ?b=2&a=1
- 编码差异:中文路径、空格、%20 与 + 的写法
这些差异对服务器来说可能是不同资源,对用户来说却是同一页。
大小写:别指望服务器自动归一
不少主机运行在区分大小写的文件系统上,/About 和 /about 是两个文件,两个都能返回 200。即使大小写不敏感,也不代表搜索引擎会替你合并。站内链接、站点地图、分享出去的地址,只要写法不统一,就会持续产生新的变体。
可行的做法是:站内链接统一成小写字母加连字符的形式;已经存在的大写 URL,用 301 集中到规范版本。
尾斜杠:先确认哪种是真正的版本
把 /about 和 /about/ 分别访问一遍,看返回码:
- 其中一个 301 到另一个,说明规范已经定好,按它统一即可
- 两个都返回 200 且内容相同,属于需要处理的情况
- 两个都 200 但内容不同,先分清是不是两个确实有区别的页面
协议与 www:最容易漏掉的一层
http 与 https、www 与非 www 组合起来有四种状态。理想情况是其中一种直接 200,另外三种都 301 到它。常见问题是只处理了首页,内页仍然能用旧协议打开;或者只做了不带 www 到带 www 的跳转,手动输入 https 时又绕回 http。
处理顺序建议
- 先确定唯一规范版本:协议、主机名、路径大小写、结尾斜杠都定下来
- 在服务器层做 301,把其余写法全部指向规范版本
- 内链、站点地图、外链、历史文章里的旧地址逐步替换
- canonical 作为补充信号,不是 301 的替代品,重定向做不到时再用它兜底
- 观察 Search Console 里“重复网页,Google 选择的规范网页与用户选择的规范不同”这类提示,以及备用网页的走向
两个常见误区
误区一:只写 canonical 就行。canonical 是提示,301 才是把信号直接合并的方式。能用重定向解决的,优先重定向。
误区二:只看首页。首页一般没问题,出问题最多的往往是分页、筛选参数、老文章和自动生成的详情页。
如果你在用主动推送或蜘蛛池一类手段加速 URL 发现,推送的地址要和规范版本保持一致。推的是 301 之前的旧写法,等于把蜘蛛反复引向即将被合并的那一条,白花抓取次数。
这类调整不会立刻改变索引结果,通常要等蜘蛛重新抓取并处理重定向之后才逐步生效。先把写法统一,再去看收录数字,比反过来做要省事。