同一个页面,往往可以通过不止一个地址打开:带 www 和不带 www、http 和 https、结尾有没有斜杠、字母大小写不同、甚至多一段 index.html。如果服务器对这些地址都正常返回 200,搜索引擎就有理由把它们当成不同页面,分别抓取、分别收录。结果就是同一个内容在索引里出现多份,标题和摘要互相竞争,站内站外的信号也被分散。
先判断:是真变体,还是本来就不同的页面
不是所有看起来相似的 URL 都属于变体。带筛选参数的列表页、分页的后续页码、真正面向不同语言或地区的版本,都是独立页面,不该强行合并。判断标准是内容本身:正文、页面标题、主要结构是否基本一致。只有当几个地址指向的是同一份内容时,才谈得上收敛。
常见的 URL 变体清单
- 协议不同:http 与 https 同时可访问
- 主机名不同:www 与非 www 都能打开
- 尾斜杠不同:/about 与 /about/
- 大小写不同:/About 与 /about
- 默认文档:/about/ 与 /about/index.html
- 显式端口:example.com:443 与 example.com
- 参数顺序与追踪参数:同一路径挂上不同排列的查询串
- URL 编码写法:同一字符的不同转义形式
它们为什么会各自被收录
常见原因有几类:服务器没有做跳转,任意变体都能拿到 200;站内链接、导航、站点地图混用了不同写法;页面本身允许多地址访问,canonical 只写了一个地址;CDN 或反向代理对 host 的判断不一致,回源后仍返回正常页面。对爬虫来说,只要地址能正常返回内容,它就可能抓取并尝试索引。
核对顺序
- 先选定一个规范形式,一次决定、长期不改:通常是 https,加上固定选择 www 或非 www,路径统一为小写,并统一是否带尾斜杠。
- 在服务器层面 301 到规范形式,而不是只靠 canonical 兜底。跳转是给爬虫最直接的信号。
- 检查跳转链,避免“变体 → 另一个变体 → 规范”的多跳,尽量一次到位,减少抓取浪费。
- 统一站内写法:导航、面包屑、正文内链、站点地图、RSS、分享按钮、广告落地页都使用规范地址。
- canonical 写成规范地址本身(自引用),其余仍可访问的变体页面在条件允许时指向规范地址。
- 检查 CDN、反向代理与负载均衡的 host 判断,确认非规范 host 不会回源出 200 页面。
- 观察实际收录地址:用 site 查询和抓取工具看索引里留下的是哪个形式,确认收敛是否在推进。
收敛之后要注意什么
- 已收录的旧变体不会立刻消失,索引更新需要时间,不必频繁改动策略。
- 如果旧变体还有外链,301 能把信号传递到规范地址,通常比直接返回 404 更平滑。
- 不要用 canonical、robots 限制、301 同时去解决同一件事,多个信号容易互相冲突。
- 参数类变体优先在服务器或爬虫规则层面处理,比逐页写标签更省事。
URL 变体的核心不是“让搜索引擎替你选一个”,而是服务器和站内链接只提供一个。你给出的信号越乱,索引里的结果越不确定。
小结
遇到同一页面多个地址被分别收录,先确认内容是否真的一致,再选定唯一规范形式,用 301、内链和 canonical 逐步收敛。顺序上,服务器跳转优先于标签提示,站内统一优先于事后清理。收敛完成后给索引留出更新时间,再用收录地址分布来验证。