如果网站存在页面重复或内容重复的问题,会对网站优化造成负面影响。因此,优化人员建议优先处理这类问题。重复可能是完全的,也可能是部分的。通常可以通过重定向解决,但在无法设置重定向的情况下,可使用另一个方法 —— rel="canonical" 属性,也就是指定规范链接的方式。
本文将介绍什么是 rel="canonical",以及如何在网站中正确使用它。
什么是 rel=“canonical”,为什么需要它
先从基础讲起。
即便是刚刚开始做网站的人也知道,相同的内容出现在多个页面上会被搜索引擎视为“重复内容”,有可能导致惩罚。但有些场景下内容重复是合理的。例如:
- 一个页面可以被多个分类调用;
- 网站既可以通过 www 访问,也可以不加 www;
- 商品目录使用了筛选器或排序功能。
页面虽然不同(如按季节过滤、按价格区间排序),但展示的商品内容是一样的。此时这些页面的内容被视为重复。
为了解决这个问题,可以用 rel="canonical" 属性告诉搜索引擎:哪个页面是“正本”,其他的是“副本”。在重复页面上加入 rel="canonical" 并指定主页面地址,让爬虫理解哪个才是应收录的主页面。
使用该属性的主要目的有:
- 避免因内容重复被搜索引擎处罚;
- 将页面权重集中到主页面上;
- 确保主页面出现在搜索结果中;
- 节省搜索引擎的抓取预算。
如何设置 canonical 属性
设置 rel="canonical" 的方式有很多,部分无需编程知识,也有些需要修改服务器或源码。
在 HTML 代码中添加
方法如下:
- 打开页面源码;
- 在
<head>标签区域中找到 meta 信息; - 添加 canonical 标签,示例如下:
<link rel="canonical" href="页面地址" />
添加到 HTTP 头部
适用于没有 <head> 区域的文件,如 PDF 或图片等资源。需要有服务器配置权限,通常需运维或开发协助。
在 sitemap.xml 中指定
搜索引擎会将 sitemap 中的 URL 视为主页面(依据 Google 官方文档)。但要确保 sitemap 中的链接不是重复内容。
注意:sitemap 中的 URL 权重不如页面 HTML 中的 rel="canonical"。
使用 CMS 插件自动生成
一些主流 CMS 提供了设置 canonical 的插件或功能:
- WordPress:使用 Yoast SEO 插件;
- Bitrix:在商品目录模块中启用“设置规范 URL”功能;
- Megagroup.ru:在“SEO 控制面板”中设置。
哪些情况下需要使用 canonical
并非所有场景都需要用 canonical,使用不当反而可能影响网站排名。以下是适用的常见场景:
网站存在重复内容
若站内确实存在重复页面,应指定原始内容页面为规范版本。
建议使用:
- Yandex.Webmaster:导航到“索引” → “被排除页面”,查看“重复状态”报告;
- Google Search Console:在覆盖范围报告中查看重复页面详情。
分页页面(分页导航)
在产品列表或文章列表中常见。若分页未处理好,会导致多个页面被搜索引擎视为重复。
解决方法:仅在第一页的 URL 上设置 canonical,其他分页不需要设置。
多种 URL 版本(HTTP、HTTPS、带/不带 www)
如果允许这些不同版本同时被搜索引擎索引,会导致它们被视为不同页面,可能出现如下问题:
- URL 被合并错误,重要页面被忽视;
- 搜索结果中出现多个版本(URL 竞争),造成关键词排名“内耗”。
应统一指定一个主版本,其他版本设置重定向或用 canonical 归一。
移动端页面
Google 非常重视移动端页面。如果网站有 m.site.com 类型的移动版:
- 在移动版中使用
rel="canonical"指向桌面版; - 在桌面版中添加
rel="alternate"指向移动版。
动态 URL
常见于使用筛选器、电商搜索、广告追踪等生成的 URL,例如:
yoursite.com/catalog/shoes/?color=black
此类 URL 数量庞大,应为每组动态页面指定一个统一的 canonical。
哪些情况下不需要使用 canonical
以下场景不建议使用 canonical:
- 大小写不同的 URL:如 /Page 与 /page,建议通过
.htaccess做 URL 规范化。此类处理需开发协助; - 多语言网站:如 zh、en、fr 各版本,推荐使用
<link rel="alternate" hreflang="...">,而不是用 canonical 或 301 跳转。
canonical 设置中的常见错误
使用 rel="canonical" 时应遵循以下基本原则:
- 页面可访问,返回 200 状态码;
- 指向相同域名下的页面;
- 每个页面只能有一个 canonical 标签。
常见错误包括:
- 同一页面设置多个 canonical 标签,爬虫可能忽略整个设置;
- 多种方式指定了不同的 canonical 地址(如 HTTP 响应头和 HTML 源码中不一致);
- 形成 canonical 链条(A 指向 B,B 又有自己的 canonical),搜索引擎会忽略;
- 标签位置错误(如放在
<body>而不是<head>); - 在分页结构中把第一页设置为所有页面的 canonical,其他页可能不被索引;
- 用 canonical 代替 301 重定向,这是错误的用途;
- 所有页面都指向首页,搜索引擎可能只收录首页,其他页面被忽略;
- canonical 指向了无法访问或被禁止索引的页面,搜索引擎会选择其他页面作为主页面。
结论
rel="canonical" 是提升网站 SEO 表现的重要工具。它帮助指定哪一页面才是搜索引擎应优先处理的版本,防止重复内容带来负面影响。
对于大型网站、电商平台、内容更新频繁的项目来说,正确使用 canonical 是提升索引效率和搜索排名的关键手段。