你网站上的同一个页面,很可能可以通过不止一个 URL 访问。跟踪参数、排序选项、会话 ID、带 www 和不带 www、结尾斜杠、打印版本,每一种都会产生一个重复页面。搜索引擎必须决定收录并显示哪个版本。
canonical 标签就是你告诉它们自己偏好的方式。
什么是 canonical 标签
canonical 标签是页面 <head> 中的一个 link 元素:
<link rel="canonical" href="https://example.com/shoes/trail-runner-x">
它的意思是:“这个 URL 是这些内容的主要版本,请把信号集中到这里。”搜索引擎会把重复的 URL 归为一组,并选择一个规范 URL显示在结果中。你的 canonical 标签是这一选择中的一个强烈提示;但重要的是,它只是提示,而不是命令。
为什么重复页面很重要
重复内容很少受到惩罚,它是技术问题而不是垃圾内容问题。但重复页面仍然会带来麻烦:
- 信号分散:链接和其他信号分散在多个 URL 上,而不是集中在一个 URL 上
- 错误的 URL 获得排名:显示的可能是带跟踪参数或筛选条件的 URL,而不是干净的 URL
- 抓取浪费:爬虫把时间花在获取重复页面上,而不是新内容上
在每个页面上使用自引用 canonical
每个可收录的页面都应该有一个指向自身的 canonical 标签:
<!-- 在 https://example.com/guides/composting 页面上 -->
<link rel="canonical" href="https://example.com/guides/composting">
这样,即使有人链接到 https://example.com/guides/composting?utm_source=newsletter,页面仍然会告诉搜索引擎哪个 URL 才是真正的那个。
检查页面的规范网址、能否正常访问,以及是否与其他信号冲突。
什么时候让 canonical 指向其他地方
当内容确实相同或几乎完全相同时,让 canonical 指向另一个 URL:
- 参数变体:
/shoes?sort=price→/shoes - 内容相同的产品变体,例如放在不同 URL 上的颜色选项(仅当它们确实几乎完全相同时)
- 转载内容:如果你的文章在另一个网站上转载,对方可以添加指向你原文的跨域 canonical
- 指向主页面的打印版或 AMP 版本
不要用 canonical 把一个页面指向另一个仅仅主题相似的页面。对于明显不同的页面之间的 canonical,Google 很可能会忽略。
canonical、301 重定向与 noindex 的区别
| 用法 | 适用情况 |
|---|---|
| 301 重定向 | 旧 URL 不应再被访问,页面已永久迁移。用户和爬虫都会被带到新 URL。 |
| canonical 标签 | 两个 URL 都需要继续为用户工作(筛选、跟踪参数、变体),但只应收录其中一个。 |
| noindex | 页面应完全不出现在搜索结果中,并且没有首选的对应页面(内容单薄的标签页、站内搜索结果)。 |
不要把 noindex 和指向另一个页面的 canonical 一起使用。这两个信号相互矛盾:一个说“丢掉这个”,另一个说“把这个当作那个的副本”。
最佳实践
- 使用包含协议的绝对 URL:
https://example.com/page,而不是/page - 每个页面一个 canonical。 多个相互冲突的 canonical 可能会全部被忽略
- 指向一个正常、可收录、返回 200 的页面,绝不要指向重定向、404 或带有 noindex 的页面
- 与你首选的协议和主机保持一致(https,以及一致地使用带 www 或不带 www)
- 保持信号一致:内部链接、站点地图 URL、hreflang 和重定向都应使用规范 URL
- 把它放在初始 HTML 的
<head>中。 由 JavaScript 添加的 canonical 可能会较晚被处理,甚至被遗漏 - 分页页面(第 2、3 页……)通常应该把 canonical 指向自身,而不是第 1 页,否则只出现在后面页面上的条目可能会丢失
多语言网站的 canonical
每个语言版本都应该有一个指向自身的 canonical,并配合列出所有语言版本的 hreflang 标签。把法语页面的 canonical 指向英语页面,等于告诉 Google 法语页面是重复页面,它可能会从法语搜索结果中消失。
HTTP 标头版本
对于 PDF 等非 HTML 文件,你可以在 HTTP 标头中发送 canonical:
Link: <https://example.com/whitepaper>; rel="canonical"
Google 为什么可能忽略你的 canonical
Google 在选择规范网址时会权衡多个信号,包括重定向、内部链接、站点地图、HTTPS 和 hreflang。在以下情况下,它可能会选择另一个 URL:
- 内部链接大多指向另一个版本
- canonical 的目标页面会重定向或返回错误
- 这些页面实际上并不重复
- canonical 从 HTTPS 指向 HTTP
Search Console 的网址检查工具会同时显示“用户声明的规范网址”和“Google 选择的规范网址”,让你能看到两者何时不一致。
常见的 canonical 错误
- 每个页面的 canonical 都指向首页(一个可能让排名全军覆没的模板错误)
- 上线后 canonical 仍指向测试或开发域名
- 解析错误的相对 URL
- 迁移后 canonical 指向已重定向的 URL
- 所有分页页面都指向第 1 页
- 带有大量跟踪参数流量的页面缺少 canonical
全站抓取会列出所有设置了 canonical 的页面,让你快速发现规律。
抓取整个网站,找出失效页面、重复标题、缺失标签和内容单薄的页面。
canonical 的场景与示例
跟踪参数
一个邮件简报链接指向 https://example.com/guide?utm_source=newsletter。页面的自引用 canonical https://example.com/guide 告诉搜索引擎应收录哪个 URL,因此来自简报链接的信号会集中到干净的 URL 上。
排序和筛选
/shoes?sort=price-asc 以不同顺序显示与 /shoes 相同的商品。把排序后的版本的 canonical 指向 /shoes。对于能产生真正不同且有价值页面的筛选条件(比如有搜索需求的 /shoes/red),使用自引用 canonical,把它们当作真正的页面对待。
结尾斜杠和大小写
/guide 和 /guide/ 在技术上是不同的 URL,/Guide 和 /guide 也是如此。选择一种格式,把另一种重定向过来,并保持 canonical 一致。
产品变体
一件有五种颜色的 T 恤,每种颜色都有自己的 URL,除了颜色名称外文字完全相同,这时可以把 canonical 指向主产品 URL。如果每种颜色都有可观的搜索需求(“红色亚麻衬衫”),并且有不同的内容和图片,就让每个颜色页面以自己的 canonical 被收录。
转载文章
你发布了一篇文章,合作网站转载了它。请对方添加指向你原文的 canonical,或者至少添加一个清晰的回链。Google 表示会尽量显示它认为最合适的版本,而那并不总是原文,所以 canonical 很重要。
大规模检查 canonical
在大型网站上,canonical 问题通常来自模板。通过抓取,你可以:
- 列出所有 canonical 指向其他 URL 的页面
- 按规律对它们分组(是所有分页页面?还是所有产品变体?)
- 检查每种规律是否是有意为之
- 找出指向重定向、错误或带有 noindex 页面的 canonical
然后与 Search Console“网页索引编制”报告中的“重复网页,Google 选择的规范网页与用户指定的不同”进行比较,这说明你声明的 canonical 与其他信号不一致。
主流平台中的 canonical
- WordPress:核心功能会在单篇文章和页面上添加自引用 canonical;SEO 插件会将其扩展到归档页,并允许你逐页覆盖
- Shopify:自动添加 canonical,包括把产品系列中的产品 URL 规范到主产品 URL
- Wix 和 Squarespace:自动添加 canonical,并提供自定义选项
- 自行开发的网站:根据路由逻辑生成 canonical,确保它始终符合首选的 URL 格式
要点总结
- canonical 标签告诉搜索引擎,在重复内容中哪个 URL 是主要版本。
- 每个可收录的页面都应该有一个使用绝对 URL 的自引用 canonical。
- canonical 是强烈的提示,而不是命令;要保持重定向、内部链接和站点地图一致。
- 页面迁移时使用 301,重复页面必须保持可访问时使用 canonical,要完全排除页面时使用 noindex。
- 绝不要让 canonical 指向重定向、错误或带有 noindex 的页面,也不要跨语言指向。
- 在 Search Console 的网址检查工具中比较声明的规范网址和 Google 选择的规范网址。
常见问题
canonical 标签会传递链接权重吗?
在合并信号方面,Google 对待被采纳的 canonical 很像对待重定向,所以指向重复页面的链接通常会让规范 URL 受益。
重复内容会受到惩罚吗?
不会。Google 不会惩罚普通的重复内容,只是从中挑选一个版本来显示。惩罚只针对蓄意欺骗性的复制或采集。
应该给标签页和分类页设置指向其他页面的 canonical 吗?
通常不应指向其他页面。如果它们有用,就用自引用 canonical 让它们被收录。如果它们内容单薄,可以考虑改用 noindex。
可以跨域使用 canonical 吗?
可以。跨域 canonical 是受支持的,适用于转载内容,或者同一产品在你自己的多个网站上销售的情况。
检测你自己的网站
免费运行 55+ 项检查,每个问题都有修复方法。