使用 rel=canonical 为类似网页或重复网页指定权威网页
如果你对 rel=canonical
还未曾了解,那么请先看一看下面这条语句:
<link>
标签应该知道吧,它是放在<head>
里面的一个元素标记,该标签定义文档与外部资源的关系。而rel
是<link>
标签里面的一个属性,canonical
则是rel
的属性值。
好了,现在进入正题,说明 rel=canonical
的重要性以及如何使用该属性。
使用 rel=canonical
为类似网页或重复网页指定权威网页
如果你的某一个网页可通过多个网址访问,或者你的不同网页包含类似内容(例如,某个网页既有移动版,又有桌面版),那么你应明确告知搜索引擎哪个网址是该网页的权威网址(权威网址)。否则,搜索引擎就会替您做出选择,或会将这两个版本视为完全等同,这可能会导致出现一些不当的行为。
请注意,虽然建议你为重复的网址或版本指定权威网页,但搜索引擎可能会出于各种原因(例如性能或内容)通过算法来选择一个不同的网页作为权威网页。
为什么我的网站上会有类似网页/重复网页?
你的网站上可能会有多个不同的网址指向同一个网页,或者在不同网址上有重复网页或非常类似的网页,这是有正当理由的。以下是最常见的原因:
- 为了支持多种设备类型:
https://example.com/news/koala-rampage
https://m.example.com/news/koala-rampage
https://amp.example.com/news/koala-rampage
- 为了为诸如搜索参数或会话 ID 之类的内容启用动态网址:
https://www.example.com/products?category=dresses&color=green
https://example.com/dresses/cocktail?gclid=ABCD
https://www.example.com/dresses/green/greendress.html
- 当你将同一篇博文同时放在多个版块中时,你的博客系统会自动保存多个网址。
https://blog.example.com/dresses/green-dresses-are-awesome/
https://blog.example.com/green-things/green-dresses-are-awesome/
- 你的服务器已配置为针对 www/非 www http/https 变体提供相同的内容:
http://example.com/green-dresses
https://example.com/green-dresses
http://www.example.com/green-dresses
- 你在相应博客上提供的要转载到其他网站上的内容与这些网域中的原有内容完全重复或部分重复:
https://news.example.com/green-dresses-for-every-day-155672.html(转载博文)
https://blog.example.com/dresses/green-dresses-are-awesome/3245/(原始博文)
具体细节
当搜索引擎将某个网站编入索引时,它会尝试确定此网站的每个网页中涵盖的主题。如果爬虫在同一网站上发现了多个似乎包含相同内容的网页,则会选择它认为最完整且实用的那个网页,并将其标记为权威网页。为了节省你网站的抓取预算,爬虫会经常抓取权威网页,而不会频繁地抓取重复网页。因此,如果你不告知爬虫哪个网页是权威网页,并且决定将一个不同的网页(与爬虫所选的网页不同)作为权威网页,那么爬虫便可能不会经常将你费心费力地更新的网页编入索引或在搜索结果中显示该网页。
爬虫会使用你网站上的权威网页作为网站内容的黄金标准对网站内容和质量进行评估,搜索引擎搜索结果通常亦会指向权威网页,除非某个重复网页明显与用户的查询更相符:例如,如果用户使用的是移动设备,那么即使桌面版网页被标记为权威网页,搜索结果也可能会指向移动版网页。
搜索引擎会根据许多因素(或“信号”)来选择权威网页,例如网页是通过 http 还是 https 提供;用户声明的首选网域;网页质量;站点地图中是否显示了相应网址;以及任何“rel=canonical
”标签。你不能强制搜索引擎将哪个网页选作权威网页,但可通过使用下文中所述的一种或多种方法来影响它的选择。
为什么一定要指定权威网页
在一组重复网页/类似网页中明确选择权威网页可满足您的诸多需求,具体如下所示:
- 指定您希望用户在搜索结果中看到的网址。你可能希望用户通过
https://www.example.com/dresses/green/greendress.html
(而非https://example.com/dresses/cocktail?gclid=ABCD
)访问你的绿色礼服商品页。 - 整合类似网页或重复网页的链接信号。明确选择权威网页可帮助搜索引擎将它们在各个网址(例如,指向它们的链接)上找到的信息整合到一个首选网址上。也就是说,从其他网站指向
http://example.com/dresses/cocktail?gclid=ABCD
的链接会与指向https://www.example.com/dresses/green/greendress.html
的链接整合。 - 简化单个商品/主题的跟踪指标。当多个网址都提供某个特定的内容片段时,获取此内容的综合指标的难度会更大。
- 管理转载内容。 如果你是为了将内容发布到其他网域而对其进行转载,那您就需要将网页排名整合到首选网址。
- 避免花费时间抓取重复网页。你肯定希望搜索引擎能够最大限度地发现你网站的价值,因此最好让它花费时间抓取你网站上的新网页(或更新后的网页),而不是抓取相同网页的桌面版和移动版。
常用的三种方法指定权威网页
- 1、rel=canonical
<link>
标记
在所有重复网页的代码中分别添加一个 <link>
标记,并使其指向权威网页。
优点:
- 可以映射无限多个重复网页。
缺点:
- 可能会导致网页大小增加。
- 在大型网站或网址经常改变的网站上维护映射可能会比较复杂。
- 仅适用于 HTML 网页,不适用于 PDF 之类的文件(在这种情况下,你可以使用
rel=canonical
HTTP 标头)。
- 2、
rel=canonical
HTTP 标头
在你的网页响应中发送rel=canonical
标头。
优点:
- 不会导致网页大小增加。
- 可以映射无限多个重复网页。
缺点:
- 在大型网站或网址经常改变的网站上维护映射可能会比较复杂。
- 3、301重定向
使用 301 重定向告知搜索定期,重定向网址是比给定网址更佳的版本。请仅在弃用重复网页时使用此方法。
具体方法
若想为重复网址或重复网页/类似网页指定权威网址,请选择下列方法之一。
- 使用 rel=“canonical” 链接标记
你可在网页标头中使用 <link>
标记来指明某个网页与另一个网页重复的情况。
假设你想将 https://example.com/dresses/green-dresses
设为权威网址(即是有很多个网址指向该内容),那么你可通过执行以下步骤将此网址指定为权威网址:
1、使用 rel="canonical"
link 元素标记所有重复的网页。将属性为 rel="canonical"
的 <link>
元素添加到重复网页的 <head>
部分中,并使其指向权威网页,如下所示:
<link rel="canonical" href="https://example.com/dresses/green-dresses" />
2、如果权威网页有对应的移动版变体,请为其添加 rel="alternate"
链接,并使其指向此网页的移动版:
<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/dresses/green-dresses">
- 使用
rel="canonical"
HTTP 标头
如果你能配置自己的服务器,则可使用 rel="canonical"
HTTP 标头(而非 HTML 标记)为非 HTML 文档(例如 PDF 文件)指明权威网址。
例如,如果你通过多个网址显示某个 PDF 文件,则可为重复的网址返回如下 rel="canonical"
HTTP 标头,以将该 PDF 文件的权威网址告知爬虫:
Link: <http://www.example.com/downloads/white-paper.pdf>; rel="canonical"
对于
rel="canonical"
link 元素,请使用绝对路径(而非相对路径)。
建议使用的结构:https://www.example.com/dresses/green/greendresss.html
不建议使用的结构:/dresses/green/greendress.html
- 对已停用的网址使用 301 重定向
如果你想移除现有的重复网页,但需要确保在停用旧网址之前顺利完成迁移,请使用此方法。
假定用户可通过以下几种方式访问您的网页:
https://example.com/home
https://home.example.com
https://www.example.com
你可从这些网址中挑选一个作为权威网址,并使用 301 重定向将来自其他网址的流量引导至你的首选网址。服务器端 301 重定向是确保将用户和搜索引擎定向到正确网页的最佳方式。301 状态代码表示相应网页已永久地迁移到新位置。
无论使用哪种方法,都请务必遵守如下常规指南
- 请勿使用
robots.txt
文件进行权威化。 - 请勿使用网址移除工具进行权威化:它会从搜索结果中移除相应网址的所有版本。
- 请勿使用相同或不同的权威化方法为同一网页指定不同的权威网址(例如,请勿既在站点地图中为某个网页指定了一个权威网址,又使用
rel="canonical"
为同一网页指定了一个不同的权威网址)。 - 请勿将
noindex
用作一种可防止选择权威网页的方法。此指令旨在从索引中排除网页,而不是管理对权威网页的选择。 - 使用
hreflang
标记时,请务必指定权威网页。指定一个采用同一语言的权威网页;如果没有这样的权威网页,则需指定一个采用最佳替代语言的权威网页。
- 优先选择 HTTPS(而非 HTTP)作为权威网址
搜索引擎会优先选择 HTTPS 网页(而非等效的 HTTP 网页)作为权威网址,除非存在如下问题或冲突信号:
- HTTPS 网页的 SSL 证书无效。
- HTTPS 网页包含不安全的关联功能(图片除外)。
- HTTPS 网页会将用户重定向至 HTTP 网页或会通过 HTTP 网页重定向用户。
- HTTPS 网页包含指向 HTTP 网页的 rel=“canonical” 链接。
虽然搜索引擎在默认情况下会优先选择 HTTPS 网页(而非 HTTP 网页),但你可通过执行以下任一操作来确保此行为始终都会发生:
- 添加从 HTTP 网页指向 HTTPS 网页的重定向。
- 添加从 HTTP 网页指向 HTTPS 网页的
rel="canonical"
链接。
为防止搜索引擎误将 HTTP 网页选为权威网页,你应避免以下几种做法:
- 使用有误的
SSL
证书和 HTTPS-HTTP
重定向。这会非常容易导致搜索引擎优先选择 HTTP,即使实施 HSTS也无法替换这种强烈的偏好设置。 - 在站点地图或 hreflang 条目中包含 HTTP 网页(而不是 HTTPS 版本)。
- 为错误的主机版本实施 SSL/TLS 证书:例如,在
example.com
上为www.example.com
提供证书。该证书必须与你的完整网站网址匹配,或者必须是可用于同一网域上多个子网域的通配证书。