如果你对 rel=canonical 还未曾了解,那么请先看一看下面这条语句:
SEO: 使用 rel=canonical 为类似网页或重复网页指定权威网页 - 图1
<link>标签应该知道吧,它是放在<head>里面的一个元素标记,该标签定义文档与外部资源的关系。而rel<link>标签里面的一个属性,canonical则是rel的属性值。
好了,现在进入正题,说明 rel=canonical 的重要性以及如何使用该属性。

使用 rel=canonical 为类似网页或重复网页指定权威网页

如果你的某一个网页可通过多个网址访问,或者你的不同网页包含类似内容(例如,某个网页既有移动版,又有桌面版),那么你应明确告知搜索引擎哪个网址是该网页的权威网址(权威网址)。否则,搜索引擎就会替您做出选择,或会将这两个版本视为完全等同,这可能会导致出现一些不当的行为。
请注意,虽然建议你为重复的网址或版本指定权威网页,但搜索引擎可能会出于各种原因(例如性能或内容)通过算法来选择一个不同的网页作为权威网页。

为什么我的网站上会有类似网页/重复网页?

你的网站上可能会有多个不同的网址指向同一个网页,或者在不同网址上有重复网页或非常类似的网页,这是有正当理由的。以下是最常见的原因:

为了支持多种设备类型:

缺点:

  • 可能会导致网页大小增加。
  • 在大型网站或网址经常改变的网站上维护映射可能会比较复杂。
  • 仅适用于 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> 部分中,并使其指向权威网页,如下所示:

2、如果权威网页有对应的移动版变体,请为其添加 rel="alternate" 链接,并使其指向此网页的移动版:

  • 使用 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 重定向

如果你想移除现有的重复网页,但需要确保在停用旧网址之前顺利完成迁移,请使用此方法。
假定用户可通过以下几种方式访问您的网页:

你可从这些网址中挑选一个作为权威网址,并使用 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 提供证书。该证书必须与你的完整网站网址匹配,或者必须是可用于同一网域上多个子网域的通配证书。