站点运营做久了,常会遇到一种情况:同一篇内容可以用好几个地址打开。带跟踪参数的、带尾斜杠的、大小写混用的、移动端专用路径的,甚至还有从旧版栏目复制过来的。对用户来说,这些链接可能只是长得不一样;但对搜索引擎和蜘蛛来说,每一个能正常返回的地址,都是一个需要单独抓取、单独判断的 URL。地址越多,抓取预算越分散,页面之间原本应该集中的信号也容易被拆开。
重复地址通常从哪来
先弄清楚来源,比急着加标签更有用。常见的几类来源如下:
- URL 参数:跟踪参数、排序参数、筛选参数、会话 ID,都会让同一个页面生成大量变体地址。
- 书写差异:大小写、结尾斜杠、带不带 index 文件,服务器如果都返回 200,就会形成多份内容。
- 协议与域名:http 与 https、带 www 与不带 www,如果同时可访问且没有跳转,等于同一内容有两个站点入口。
- 特殊版本路径:打印页、AMP 页、移动版独立路径,如果没有做好指向关系,会被当成独立内容。
- 分页与聚合:列表翻页、标签聚合页、专题页,容易和原始内容页产生大量重叠。
一份可执行的自查清单
不必全站铺开,先随机抽二三十个内容页,按下面几步走一遍,问题通常就能暴露出来:
- 用带参数、大写、无尾斜杠等不同写法分别访问同一个页面,看是否都返回 200。
- 查看页面源码,确认 canonical 指向的是自身的主地址,而不是别的栏目或首页。
- 检查 canonical 是否被模板写死成同一个值,这种情况在改版后特别常见。
- 对照 sitemap,看提交的是哪一个版本的地址,和 canonical 是否一致。
- 检查站内链接、面包屑、相关推荐,指向的是主地址还是带参数的地址。
- 确认参数地址是否有 301 或规则拦截,而不是长期可访问。
canonical 写法的几个注意点
- 使用完整的绝对地址,不要写相对路径,避免解析歧义。
- 指向的目标应当是正常返回 200 的主地址,不要指向 404 或已重定向的地址。
- 避免 A 指向 B、B 又指向 C 的链式写法,链条越长,越容易被忽略。
- 分页列表中,每一页通常指向自身,而不是全部指向第一页。
- 同一内容的不同版本不要各自指向不同的地址,否则等于同时发出互相矛盾的信号。
只加 canonical 还不够
需要说明的是,canonical 对搜索引擎而言是一种提示,并不保证一定被采纳。真正稳妥的做法,是让多个入口指向同一个结果:能跳转的用 301 跳到主地址,站内链接尽量只链主地址,sitemap 里也只提交主地址。三者方向一致时,蜘蛛遇到的重复路径会明显减少,判断成本也更低。
另外,规范化不是一次性工作。新增栏目、改版、切换 CDN、调整伪静态规则之后,旧的地址可能又冒出来。建议把这项检查放进运营例行动作里,每次结构有变动就抽查一轮。
重复地址本身不算错误,真正麻烦的是它们长期共存、互相没有关系说明。把入口收拢到一个地址上,抓取和信号才有机会集中起来。