很多站点的问题不是抓取不够,而是同一个页面存在好几个都能打开的地址。搜索引擎分别抓到这些地址,收录、外链权重和点击数据就被分散到不同 URL 上,表现自然不稳定。地址统一不是一次性工程,而是先盘点、再收敛、最后守住的过程。
同一页面为什么会有多个地址
常见来源其实就那么几类,逐条对照就能找到大部分问题。
- 大小写差异:/Product/A1 和 /product/a1 在部分服务器上都能返回 200。
- 末尾斜杠:/list 与 /list/ 同时可访问。
- 主机名:example.com、www.example.com 甚至 m.example.com 都能打开同一套内容。
- 协议:http 与 https 并存,或 https 站点下仍能通过 http 访问。
- 默认文件:/about 与 /about/index.html 都返回完整页面。
- 端口与内部地址::8080、内网 IP 或测试域名偶尔被外部链接引用。
先盘点,再决定统一到哪个地址
- 把页面实际可访问的地址列出来,不要只凭印象。服务器访问日志按路径聚合,通常一眼就能看出变体。
- 看索引里已经收录的是哪一个版本,外链与点击数据集中在哪一个。
- 看站内链接、面包屑、sitemap、分页和结构化数据里写的是哪一个地址。
- 看现在的 canonical 与跳转指向哪里,是否互相矛盾。
统一目标的选择没有绝对答案,但通用原则是:优先选择已经有历史数据和外部链接的版本,而不是自己主观上更喜欢的那个。新站点则尽量选结构简单、不带 index.html、协议与主机名唯一的地址。
收口方式:一个地址对外,其余 301
canonical 是提示,301 是更强的信号。对于确定不会再作为主地址使用的变体,用 301 直接指向目标地址,比只写 canonical 更干净。但要注意两点:
- 跳转要一步到位,避免 A→B→C 的链式跳转,链越长,信号损耗越大。
- 不要出现 301 指向 A、canonical 指向 B 的情况,两个指令打架时,处理结果会变得难以预测。
如果变体数量很大,比如带排序或跟踪参数的地址,可以用规则批量处理,而不是逐个配置。参数收口与地址统一是两件事,可以一起做,但要分别验证。
容易漏掉的几处
- 内链一致性:站内链接大小写、斜杠不统一,会让爬虫不断发现新变体。统一模板和编辑规范比事后清理省力得多。
- sitemap 与 RSS:里面写的地址应与主地址完全一致,包括协议和主机名。
- 分页与筛选:第二页、筛选结果常会从主列表衍生出大量地址,需要单独定规则。
- 分享与广告链接:带 utm 参数的分享链接被转载后,容易形成新的收录入口。
- 服务器大小写敏感:本地开发环境不敏感、线上敏感,很容易上线后才发现问题。
建议的处理顺序
- 先统一主机名与协议,这一步影响面最大,也最容易用整站跳转完成。
- 再处理路径层面的变体:末尾斜杠、默认文件、大小写。
- 然后是参数与筛选类地址,按规则收口并观察抓取变化。
- 最后回到内链和模板,堵住新变体产生的入口。
地址统一的效果通常体现在抓取分布更集中、重复页面减少、单个 URL 的表现更稳定,而不是第二天就出现明显的收录增长。
处理完之后不必天天盯着收录数字。定期抽查新上线栏目和模板改动,确认它们仍然指向同一个主地址,防止旧问题重新长出来,就足够了。