一个商品页因为渠道参数变成了五个地址,一个文章有打印版和普通版两套路径,旧域名迁移后老链接还留在外链里——这些情况最终都会指向同一个问题:这些 URL 里,Google 应该把哪一个当成正式版本?canonical 就是用来表达这个偏好的标签。它写在页面代码里,是一个规范化信号,不会让浏览器跳转,也不保证 Google 一定采用你指定的那个地址。搞清它的适用边界,能省掉很多反复提交和反复验证的时间。
光算的《SEO中的canonical是什么:设置方法、常见误配与核验》把设置方法和常见错配都列了出来,下面按实际动手的顺序整理一遍。
先判断:这些 URL 是不是真的该合并
不同性质的 URL 差异,处理方式完全不同,先分类再动手:
同一篇文章带了不同的 utm 参数——先确认主体是否相同、参数是不是只用于来源统计。如果是,就让这些重复版本指向稳定的文章地址。
旧地址和新地址并存——先确认旧入口是否已经永久停用。如果有明确的对应关系,用永久重定向比 canonical 更合适,因为重定向同时解决了访问和规范化两件事。
筛选后的商品列表——先判断它是否形成独立、有用且可维护的页面。如果筛选页有真实的搜索价值,就保留自己的规范地址,不要一律指向未筛选的目录页。
文章分页——看每一页是否提供了不同的正文或条目。通常各页保留各自的规范地址,不要把所有页都当成第一页的副本。
不同语言版本——确认它是不是面向对应语言的完整页面。规范地址和语言关系要分别设置,不能因为是同一产品的翻译就把所有语言版本都指向中文页。
还有一个常见误用是锚点片段。#comments 这类片段一般用于在同一文档内定位,不会随 HTTP 请求发送给服务器,不能把它当成一个独立的第四份内容指望被单独抓取。
写法:放在哪里,用哪种形式
标准写法是在 HTML 的 head 里输出一个 canonical 链接标签,rel 属性写 canonical,href 写完整的规范地址。对于主体相同、只是带参数的两条路径,把规范地址写在带参数的那一页的 head 里即可。
几个细节值得留意。官方当前也建议规范页本身保留一个指向自己的 canonical,也就是自指。地址建议用完整绝对 URL,相对地址虽然也支持,但在测试环境、站点迁移和跨协议场景下容易出现意外指向。尾斜杠要不要保留,取决于站点的真实路由和规范选择,并没有全网统一的做法。
对于 PDF 这类非 HTML 文档,可以按服务器能力用响应头声明,比如在 Link 头里写上目标地址并标注 rel 为 canonical。
还有几个操作上的坑:不要在编辑器正文里粘贴一个标签就当作 head 已经配置好;不要让主题、SEO 插件和反向代理各自输出不同的目标;如果 canonical 由 JavaScript 生成,要核对最终渲染结果,初始 HTML 已经写明时就不要再用 JS 改成另一个地址。
四种手段的分工,不要混用
canonical、永久重定向、noindex 和 robots.txt 里的 Disallow,解决的是不同问题,作用边界也不一样:
canonical 表达重复或相似页面的规范偏好,不强制浏览器跳转,也不保证页面不被索引。
301 或 308 永久跳转把访问带到永久对应地址,同时给出规范化信号,但不保证立刻恢复原有排名。
noindex 要求把页面从搜索索引里排除,前提是爬虫能读取到这条指令。它不保护私密数据,也不能替代访问控制。
robots.txt 里的 Disallow 限制遵守规则的爬虫去请求相应资源,它不保证 URL 退出搜索结果,而且会阻止爬虫读到页面里的新 canonical 或 noindex。
官方并不建议用 noindex 在同站重复页中选择规范版本。需要限制索引时按 noindex 的用途处理,需要迁移访问时按重定向的用途处理,不要把三种功能混成一个“权重转移开关”。
五类常见错配,按这个顺序排查
全站都指向首页:逐篇检查正文身份。不同文章不能因为共用一个模板就全部声明成首页副本。
目标地址不可用或已被排除:检查目标地址的最终状态、正文和索引意图,不要让规范地址落到 404、登录页或错误环境上。
信号互相冲突:把 head、HTTP 响应头、JavaScript、站点地图、内链和重定向一起看,确认它们讲的是同一组关系。最常见的冲突是地图里写的是 A 地址,canonical 指的却是 B 地址。
不同内容被强行合并:核实筛选页、分页、语言页和商品变体的实际用途,不能用查重百分比来代替对页面用途的判断。
规则正确却没有发布出去:对比源站和公网的输出,检查插件、静态副本、页面缓存和 CDN 是否还在输出旧地址。这一类问题不查源码根本看不出来。
怎么确认 Google 实际选了哪一个
先把发布后的页面源码和响应头保存下来,然后用 Search Console 的网址检查去对照两项内容:你声明的规范网页,以及 Google 选择的规范网页。实时测试能帮你看当前访问和输出,但它不能证明 Google 已经重新处理并接受了你设置的新关系。
两边选得不一样,不一定是故障。先确认 Google 选中的那个页面是不是确实和你这一页重复,再看你的各处信号是否一致。如果页面本来就该独立,就去查内容差异和错误指向;如果本来就重复,那就确定所选地址是否符合业务安排。技术验收看的是地址、内容和信号是否正确,搜索验收看的是后续处理结果。
最后提醒一句:市面上流传的那些公式,比如“重复到某个百分比就一定会被合并”“canonical 传递百分之多少权重”“加上标签索引率一定提升多少”,在官方文档里都没有依据。canonical 是一个信号,不是开关,也不能替代重定向、站点地图和内链这几件事各自该做的部分。