网站收录

canonical 标了却不生效:它只是提示,冲突时该按什么顺序处理

canonical 常被当成一句话就能解决的收录指令,但它本质上只是提示。本文说明它为什么会被忽略、与其他技术信号冲突时大致怎么排优先级,以及在分页、noindex、整站换址等场景里常见的误用,并给出一份标注前的自查清单。

网站收录

canonical 标了却不生效:它只是提示,冲突时该按什么顺序处理

给页面加上 canonical 之后,很多人会默认这个 URL 从此就被认定了。实际情况是,canonical 更像一条建议,搜索引擎可以参考,也可以不采纳。当页面上还有别的信号与它冲突时,被忽略并不罕见。

canonical 表达的是偏好,不是命令

它的作用是在一组内容相同或高度相似的 URL 里声明我倾向于把哪个当成正本。抓取、索引、排序是分开的环节,最终留下来的是哪个地址,还要看引擎对各路信号的综合判断。所以标了不代表生效,没标也不代表一定会出问题。

标了却不生效的常见原因

指向的地址本身不可索引

如果 canonical 指向的 URL 返回 404、被 robots.txt 拦住、或者带着 noindex,这条声明就等于指向一个死胡同。引擎不会把结果导向一个打不开或被排除的页面,通常会忽略这个 canonical,改由自己判断哪个更合适。

页面里出现了多个 canonical

一份文档中出现两个甚至更多 canonical,比如模板和编辑器各插入了一份,信号互相抵消,效果接近于没标。检查时应该看渲染后的 HTML,而不是只看源文件或者后台编辑器里的字段。

canonical 与页面内容并不匹配

两个页面只是主题相近、内容差异明显,却被硬性标成同一份,被忽略是正常的。canonical 用来合并同一份内容的多个地址,不是给不同内容的页面做取舍的工具。

分页列表每页都指向第一页

把第 2、3 页的 canonical 全部指向列表首页,会让后面这些页面很难被单独索引。是否保留分页 URL,取决于它们本身有没有搜索需求,一刀切地指向第一页往往会损失长尾入口。

拿 canonical 代替重定向

整站迁移或者页面永久换地址时,首选仍然是 301。canonical 不会把原地址的流量和信号顺过去,它只是表明我认哪个是正本。把本该重定向的场景用 canonical 处理,通常达不到预期。

几种信号冲突时,大致怎么排

  • 301、308 属于地址层面的明确迁移,优先级最高,一般按它走。
  • noindex 的作用是别收录这个页面,它比 canonical 更强。一个页面既 noindex 又指 canonical,本身就是自相矛盾的写法。
  • canonical 次之,参考价值取决于它是否唯一、是否稳定、目标是否可索引。
  • 站点地图、内链结构、历史收录记录也会一起参与判断,不能只盯 canonical 一个点。

标注前的自查清单

  • canonical 指向的 URL 能正常打开,返回 200,且没有被 noindex。
  • 每个页面只有一个 canonical,出现在 head 中。
  • 使用绝对地址,域名、协议、www 与否前后保持一致。
  • 目标页没有反过来再指向第三个地址,避免形成链条。
  • 分页、筛选页的策略与实际收录预期一致,不是照抄模板。
  • 只有内容确实相同才合并;只是部分相似时,优先考虑把各自内容做扎实。

哪些情况不适合用 canonical

两个页面主题相近但内容不同、各自都有搜索价值时,标 canonical 只会让其中一个进不了索引,属于自我削弱。这类情况更该做的是让两篇各有明确侧重,而不是强行二选一。

另外,仅仅是大小写、末尾斜杠、跟踪参数这类差异,优先在服务器和链接层面统一,从源头减少重复地址的产生,比事后满站补 canonical 更省事,也更好维护。

canonical 是收敛重复地址的工具之一,不是万能开关。它能不能被采纳,取决于这条声明是否与页面实际内容、以及其他技术信号保持一致。