站点运营

站点运营:canonical 标签的写法与自查,别让页面互指同一个地址

同一份内容常常有多个可访问地址,canonical 就是告诉搜索引擎哪个是首选版本的一句话。本文梳理 canonical 的写法要点、自引用检查、与 noindex 和 301 冲突时的处理,以及上线前的自查清单,帮你避免把错误信号发给蜘蛛。

站点运营

站点运营:canonical 标签的写法与自查,别让页面互指同一个地址

canonical(rel="canonical")是页面里的一句话:这份内容真正的地址是哪一个。用得好,能减少多个地址互相分散;用错,等于亲手把蜘蛛引向别处。

canonical 到底解决什么问题

同一份内容出现多个可访问地址是很常见的:带参数的活动链接、HTTP 与 HTTPS 并存、带 www 与不带 www、打印页、移动版页面等。canonical 的作用是声明这些地址里哪个是首选版本。

要清楚它的定位是建议而不是指令,最终判断权仍在对端。它也不能替代重定向:如果旧地址本就不该再被访问,用 301 更干净。

自引用 canonical:最基础也最容易漏

每个正常页面都应该有一条指向自己的 canonical,地址与当前页面的规范地址完全一致,包括协议、域名、路径、大小写和结尾斜杠。

漏掉自引用本身不一定立刻出问题,但当页面被多个参数地址访问时,缺少这条声明会让版本判断变得模糊。

写法上的几个要点

  • 使用绝对地址,写全 https:// 与域名,避免相对路径带来的歧义。
  • 一个页面只写一条 canonical,不要重复出现多个标签。
  • 大小写、结尾斜杠、参数顺序要和页面对外的主地址保持一致。
  • 指向的目标必须可访问且返回 200,不要指向 404、301 或者被 robots 屏蔽的地址。
  • 不要跨域名乱指,除非确实是同一内容的分站或镜像关系。
  • 移动端与桌面端是两套地址时,桌面版指向自身、移动版指向桌面版是常见做法,但要与站点整体策略一致。

几个容易打架的组合

canonical 与 noindex 同时出现

一个页面既声明 canonical 指向 A,又加了 noindex,信号是矛盾的。常见结果是这个页面不被保留,但它未必会按你的设想把价值传给 A。两者通常选一个用。

canonical 与 301 混着用

如果 A 页面 301 到 B,B 又 canonical 回 A,就形成闭环。蜘蛛在中间来回绕,最后可能两个地址都得不到明确结论。改版或合并内容时,先把跳转关系理清,再补 canonical。

分页与筛选页

列表页的翻页不要全部 canonical 到第一页,那会让后续页面的内容被忽略。筛选参数生成的地址,更合理的做法是治理参数本身,或者对无价值的组合做屏蔽,而不是一律指向列表主页。

上线前的自查清单

  1. 随机抽 20 个页面,检查 canonical 是否指向自己,且与当前 URL 完全一致。
  2. 搜索全站模板,确认没有把 canonical 写成固定的主页地址。
  3. 检查 canonical 目标地址的返回码,确认是 200。
  4. 检查是否与 noindex、robots 屏蔽、301 存在冲突。
  5. 活动页、专题页这类临时地址,确认指向的是你真正想保留的版本。
  6. 用爬虫工具跑一遍,把 canonical 指向与预期不一致的页面列出来逐条确认。

别把它当成重复内容的万能解药

canonical 处理的是同一份内容的多个地址,不是两篇相似但不同的文章。如果两个页面内容确实不同,硬指到同一处,反而会让其中一个页面的价值被抹掉。

canonical 是一条声明,不是一道命令。写之前先想清楚:这些地址里,你到底希望蜘蛛记住哪一个。