网站收录

canonical 指向了另一个 URL:索引里最后留下谁

canonical 常被当成收录开关,其实它只是一个合并提示。本文说明它表达什么、几种常见用法、与 noindex、robots.txt、301 同时出现时谁更优先,并给出一份上线前可以逐条核对的清单,帮你在多 URL 并存时把信号理顺。

网站收录

canonical 指向了另一个 URL:索引里最后留下谁

canonical(rel=canonical)是页面里最容易被随手加上、也最容易被误解的一个标签。不少站点把它当成收录开关,以为写上目标 URL,索引里就只会留那一个。实际上它给的是合并提示:这几个 URL 我认为是同一份内容,主版本是它。搜索引擎会参考,但不保证照做,更不保证你指定的那个一定被收录。

它表达的是合并,不是收录

当同一份内容能通过多个 URL 打开时,canonical 的作用是减少重复判断:

  • 带排序、筛选、会话参数的版本,与不带参数的干净版本;
  • www 与非 www、http 与 https 同时可访问的历史遗留地址;
  • 同一篇稿子发布在多个栏目下,各自有独立 URL;
  • 移动版、打印版与正常版并存。

它想说的是别把这些当成不同页面,而不是让某个页面被收录。能不能进索引,还要看内容质量、抓取情况、URL 是否规范这些更基础的东西。

三种常见用法

参数页指向干净版本

列表页被排序、筛选参数切出几十个地址,每个地址内容大同小异。这时可以让参数版指向不带参数的版本。前提是干净版本自己能稳定返回 200,且内容确实覆盖了参数版的主要内容,否则用户从搜索结果点进来会觉得对不上。

多域名或镜像站指向主站

跨域 canonical 是较强的合并信号,但不是强制指令。如果两个站内容完全一致、又都有独立外链和流量,更彻底的做法的确是把其中一个做规范跳转,而不是长期靠标签维系。标签适合过渡期,不适合当永久方案。

内容合并后旧页指向新页

栏目调整、文章重写时,旧 URL 往往还有内链、还有外链、还有零散流量。直接删掉返回 404,这些积累就浪费了;可以先让旧页保留、canonical 指向新页,同时逐步把站内链接换成新地址,等外链和流量自然衰减后再做跳转或下线。反过来,如果旧页内容已经完全不同,就不该再用 canonical 硬合并。

和别的指令撞在一起时会怎样

实际排查中,问题多半不是单条写错,而是几条信号互相打架:

  • canonical 指向 A,但这个页面本身写了 noindex。noindex 会让当前 URL 退出索引,合并的意义被削弱,甚至导致 A 也没被收录。
  • canonical 指向 A,但 robots.txt 挡住了 A。蜘蛛抓不到 A 的内容,合并判断会打折,只能靠历史数据推测。
  • canonical 指向 A,而 A 返回 404 或 5xx。信号落空,等于白写。
  • canonical 指向 A,页面同时又 301 到 B。跳转通常优先处理,蜘蛛会跟到 B,canonical 的实际效果要按 B 来判断。
  • canonical 与 hreflang 互相矛盾。多语言站里,两套标签指向的地址必须能自洽,否则语言版本会被搅在一起。
一句话原则:这些信号要么互不干涉,要么指向同一个地址,最怕各指一处。

上线前的检查清单

  1. canonical 目标必须能正常访问并返回 200,不能指向 404、跳转链或需要登录的地址。
  2. 目标页自己也要 canonical 指向自己,避免出现 A 指向 B、B 指向 C 的链条。
  3. 不要全站统一指向首页,这会把整站内容都并成一份,通常是过度使用。
  4. 分页、列表页不要随手 canonical 到第一页,除非你确实不打算让后面的分页被单独收录。
  5. 同一批 URL 的写法保持一致:大小写、尾斜杠、参数顺序统一,减少无谓的重复版本。
  6. 改版换域名时,canonical 与 301 的指向要保持一致,别一个指新域名、一个指旧域名。

怎么确认有没有生效

可以用站内检索看目标 URL 有没有出现、用 URL 检查类的工具看搜索引擎实际识别到的是哪个地址,也可以对着服务器日志看蜘蛛是否在抓目标页。索引报告里的重复网页、已排除等分组,往往能侧面反映合并是否被接受。需要提醒的是,这些观察都只是参考,最终的判断在搜索引擎那边,标签写得再齐,也替代不了内容本身是否值得收录。