打开索引一看,几个页面的标题和摘要几乎一样,点进去内容也相同,区别只在地址:一个是 http,一个是 https;一个带 www,一个不带;一个有尾斜杠,一个没有。这类情况通常不是搜索引擎判断错了,而是站点自己同时输出了多个可用地址,蜘蛛只好每个都抓一遍、都判一遍。
处理这类问题,关键不是「删掉多余页面」,而是给同一份内容确定唯一地址,并让站内所有出口都指向它。下面按从内到外的顺序梳理。
先确认:这些 URL 是不是同一份内容
动手之前先做一次比对,避免把真正不同的页面误合并:
- 正文、标题、主要段落是否一致;
- 只是列表排序、筛选条件不同,还是内容本身不同;
- 是否一个版本带了额外模块,例如打印版、移动版、会话版。
如果只是排序参数不同而主体内容一致,一般可以按同一内容处理;如果筛选后确实呈现了不同的商品集合或文章集合,则需要单独评估,不要一刀切跳转。
常见的 URL 变体来源
- 协议:http 与 https 并存,且两边都能打开;
- 主机名:www 与裸域都能访问;
- 尾斜杠:/a 与 /a/ 都返回 200;
- 大小写:/Page 与 /page 都能打开;
- 默认文件:/a/ 与 /a/index.html 同时可访问;
- 追踪参数:?utm_source=… 被大量外链和投放带进来;
- 排序与分页参数:?sort=、?page= 被内链反复输出;
- 会话与打印版本:?sid=、/print 等自动生成的地址。
这些变体往往不是有人刻意添加,而是服务器配置、模板输出和历史遗留叠加的结果。先找到来源,再决定怎么收。
收口顺序:站内输出、跳转、canonical
第一步:统一站内链接的输出
先让网站自己不再制造变体。导航、面包屑、正文内链、分页链接、sitemap 里的地址,全部使用同一个格式。如果站内链接一半带尾斜杠、一半不带,蜘蛛就会顺着这些链接继续发现两套地址。这一步成本最低,收益也最直接。
第二步:用 301 把变体指向唯一地址
确定唯一地址后,让其余写法做 301 跳转,并且一跳到位,不要 http→不带 www→带 www→https 这样串成多跳。多跳链路会拉长抓取路径,也容易在中间环节丢失参数或丢失路径。跳转目标应当是最终可直接打开的地址。
第三步:canonical 作为补充,而不是替代
canonical 是提示,不是强制指令。它能帮助搜索引擎理解你的偏好,但不会阻止变体地址被访问。更要注意的是,如果一个页面被 robots.txt 屏蔽了抓取,搜索引擎看不到页面里的 canonical,也就无法据此合并。所以顺序上应当是:先能正常访问并跳转,再用 canonical 表达偏好。
参数部分的处理
追踪参数和排序参数的处理要分情况:能通过模板改造去掉的,优先改造;无法去掉的,可以在搜索平台后台配置参数忽略规则;不建议用 robots.txt 直接屏蔽带参数的地址,因为屏蔽后页面无法被抓取,其中的 canonical 和内容信号也一并丢失。
一份可执行的自检清单
- 站内所有内链是否使用统一格式,是否还有历史遗留的旧写法;
- 变体地址是否都有 301,且跳转链不超过一跳;
- canonical 是否自指,且与最终可访问地址完全一致;
- sitemap 中是否只保留规范地址,是否残留变体;
- 抓取日志里,变体地址的访问量是否在收口后逐步下降;
- 外链和投放链接是否还在使用带参数的旧地址。
收口之后怎么观察
可以同时看三个地方:服务器日志中变体地址的请求占比是否下降;搜索平台的索引状态中,重复版本是否逐步向规范地址靠拢;站内搜索或站内入口是否还在输出变体链接。索引变化通常需要一段时间,不必因为一两天没动静就反复改动配置。
URL 收口不是一次性动作。改版、换 CDN、新增页面模板、开启新的投放渠道,都可能重新产生变体。建议把「站内链接格式」和「跳转规则」纳入上线检查项,而不是等到索引里出现重复页面才回头处理。