站点运营

站点运营:canonical 与规范化 URL 自查,别让同一篇内容出现多个版本

同一篇内容常常以多个 URL 存在:带 www 与不带、带尾斜杠与不带、带参数与不带。本文梳理重复版本的常见来源,给出一份可执行的 canonical 自查清单,并说明什么情况下该用 301、什么情况下用 canonical,以及如何让站点地图、内链和分享链接与规范地址保持一致。

站点运营

站点运营:canonical 与规范化 URL 自查,别让同一篇内容出现多个版本

很多站点运行一段时间后,同一篇内容会以多个 URL 的形式存在:带 www 和不带 www、带尾斜杠和不带、大写和小写、带参数和不带参数。对访客来说这些页面看起来一样,但对搜索引擎来说,它们是几个不同的地址。canonical(规范化链接)就是用来声明“这几个地址里,哪个是正本”的一种标记。

哪些操作容易产生多个版本

  • 同一篇文章既能从分类页进入,也能从标签页、归档页进入,地址各不相同;
  • 列表页翻页后,后面的页面与第一页内容部分重合;
  • 站内搜索、排序、筛选参数被完整保留在 URL 里,并且这些地址被内链或外链引用;
  • http 与 https、www 与裸域同时可访问,没有做统一跳转;
  • URL 结尾斜杠处理不统一,带斜杠和不带斜杠都能打开;
  • 文章改版后新地址上线,旧地址仍返回 200,而不是跳转。

一份可执行的排查清单

  1. 结合站点地图和服务器日志,列出被访问较多的地址,挑出内容相同、地址不同的组合。
  2. 确认每个页面的 canonical 是否指向自己,而不是全站所有页面都指向首页。
  3. 检查 canonical 地址本身能否正常打开、返回什么状态码、协议与域名是否和页面实际使用的一致。
  4. 查看分页、筛选参数页面是否被统一声明成同一个地址,导致后续页面失去独立身份。
  5. 核对列表页、标签页、作者页等聚合页面,canonical 是否与实际呈现的内容对应。
  6. 抽查旧地址是否还在站内被链接,如果有,考虑改成规范地址。

canonical 不是万能钥匙

canonical 是一种建议,而不是强制指令。如果站内有大量链接指向非规范地址,或者旧地址仍返回 200 并被外部引用,搜索引擎依然可能选择它认为更合适的版本。所以声明 canonical 的同时,最好把站内链接同步统一到规范地址上,把信号做一致。

什么时候该用 301

如果某个地址已经确定不再使用,比如换域名、改路径、合并栏目,301 跳转比 canonical 更干脆,它直接把访客和蜘蛛送到新地址。canonical 更适合“两个地址都要保留”的情况,例如带参数的排序页、打印页、会话参数页。

规范化的目标是让同一份内容只有一个主地址,而不是把多个页面的表现硬塞给某一个页面。

让各个信号保持一致

  • 站点地图里只提交规范地址,不要混入参数版本和旧路径;
  • 导航、面包屑、正文内链一律指向规范地址;
  • 分享按钮、Open Graph 等信息使用规范地址;
  • HTTP 响应头里的 Link rel=“canonical” 与页面内的声明保持一致,不要互相矛盾。

几个常见误用

  • 所有页面 canonical 都指向首页,等于告诉搜索引擎这些页面都是首页的副本;
  • canonical 指向一个已经 404 或者会跳转的地址;
  • 分页页面全部 canonical 到第一页,后续内容更难被单独发现;
  • canonical 用相对路径时写错层级,实际指向了不存在的地址;
  • 改版后只加了 canonical,却忘了把旧地址做跳转,两个版本长期并存。

规范化不是一次性工作。每次改版、上线新栏目、接入新参数或者调整分页规则之后,都值得抽几个典型地址检查一遍。发现问题时,先想清楚这份内容到底应该以哪个地址为主,再去决定用 301 还是 canonical,站内链接、站点地图和分享链接跟着一起改,整站的地址结构会清爽很多。