[43] [[リンク型]] [DFN[[CODE(HTML)@en[canonical]]]] は、
同じ内容の複数の [[URL]] がある場合に、
最も好ましい形と考えられる [[URL]] を指定するものです。

[44] 
何を好ましいとするかは、[[著者]]が判断できるものです。
例えば何らかの事情で同じ内容を [CODE[example.com]] と [CODE[example.jp]]
で提供している時、 [CODE[example.com]] の [[URL]] を[[正本]]と考えるなら、
そちらの [[URL]] を [CODE(HTML)[canonical]] として指定することができます。

* 仕様書

[REFS[
- [6] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-06-17 07:45:16 +09:00]]) <https://html.spec.whatwg.org/#link-type-canonical>
- [19] [CITE@en[RFC 6596 - The Canonical Link Relation]]
([TIME[2012-04-06 22:57:34 +09:00]] 版) <https://tools.ietf.org/html/rfc6596>
]REFS]

* 意味

[20] 
[CODE[canonical]] は、
重複した (duplicative) 内容を含む[[資源]]から、好ましい [[URL]]
への関係を示すものです。 
[CODE[canonical]] として指定される [[URL]] は、
参照元の [[URL]] の[[内容]]と[RUBYB[重複]@en[duplicative]]したものか、
[[超集合]]となっているものでなければ[MUST[なりません]]。 [SRC[>>19]]

[EG[
[21] 例えば[[セッションID]]のような[[引数]]のついた [[URL]] から本来の [[URL]]
への関係や、
複数の [[Webページ]]に分割された版から単一の [[Webページ]]にまとめられた版への関係を記述するために使われます。
[SRC[>>19]]
]EG]

;; [38] ただし、複数ページから単一ページへの [CODE[canonical]] [[リンク]]を追加する場合、
[[利用者体験]]が損なわれないか検討する[SHOULD[べきです]] [SRC[>>19]]。

[30] 
複数のページで構成される [[Webページ]]の先頭ページを表すために使う[SHOULD[べきではありません]]。
先頭ページは2ページ目以降の内容を含んでいるわけではないからです。 [SRC[>>19]]

[24] [[著者]]は、[[検索エンジン]]などが次のようにして扱うことができると期待することになります
[SRC[>>19]]。

- [25] 指定された [[URL]] のみが[[索引付け]]の対象となる
- [26] [[リンク]]の人気度のような[[特性]]が指定された [[URL]] にまとめられる
- [27] 指定された [[URL]] が代表の [[URL]] として表示される

[28] 
[[リンク先]]として指定する [[URL]] は、[[リンク元]]の [[URL]] と同じであっても構いません。
[SRC[>>19]]

[29] 
[[リンク先]]として指定する [[URL]] は、[[リンク元]]の [[URL]] と[[同じ起源]]でなくても構いません。
[SRC[>>19]]

[31] 
[[リンク先]]として指定する [[URL]] は、
[CODE[302]]、[CODE[303]]、[CODE[307]] といった一時的な[[リダイレクト]]であっても構いません。
[SRC[>>19]]

[34] 
しかし [CODE[300]] や [CODE[301]] のような永続的[[リダイレクト]]の [[URL]]
とするべきではありません。 [SRC[>>19]]

[36] 
[CODE[4xx]] などの[[誤り符号]]を返す [[URL]] とするべきではありません。 [SRC[>>19]]


[35] 
また、他の [[URL]] への [CODE[canonical]] が指定されている [[URL]] とするべきではありません。
[SRC[>>19]]

* 構文

[49] 
[[素片識別子]]の利用は禁止されていません。しかしどのような意味を持つのかは不明です。


[32] [[相対URL]]で指定することも可能です。 [SRC[>>19]]

* 文脈

[39] 
[CODE[canonical]] を使う前に、 [CODE[301]] [[リダイレクト]]を使えないか検討する[SHOULD[べきです]]
[SRC[>>19]]。

[41] 
[[HTML]] [CODE(HTMLe)@en[link]] [[要素]]で使うことができます [SRC[>>6]]。
[[ハイパーリンク]]を作成するものとなります [SRC[>>6]]。

;; [42] [[HTML]] [CODE(HTMLe)@en[a]]/[CODE(HTMLe)@en[area]] [[要素]]では使えません
[SRC[>>6]]。

[40] 
[CODE(HTTP)@en[Link:]] [[HTTPヘッダー]]で使うことができます [SRC[>>19]]。 

[33] 1つの[[資源]]に複数の [CODE[canonical]] [[リンク]]を指定するべきではありません。
[SRC[>>19]]

* 応用

[22] 
[[検索エンジン]]は、重複した内容を持つ [[URL]] を[[著者]]がより好ましい [[URL]]
に「[[正準化]]」してまとめるために使っています。

[37] 
[CODE[canonical]] で指定された [[URL]] が更に他の [[URL]] を [CODE[canonical]]
や [CODE[301]] で指している場合や、
[CODE[4xx]] を返す場合には、
[[実装依存]]の方法で対処することができます。
不適切な [CODE[canonical]] であるとして無視しても構いません。 [SRC[>>19]]

* 乱用

[45] 
[[SEO]] 目的で異なる内容の [[Webページ]]間に [CODE[canonical]] [[リンク]]を設定する悪質な[[事業者]]も存在します。
[[検索エンジン]]は内容の関連性を検査して、同内容と判断できない場合には無視するかもしれません。

* 実装

[53] 
[[iPhone]] の [[Safari]] は画面下部の[[共有]]ボタンから[[クリップボード]]に[[コピー]]したり、
[[メール]]したりを選べますが、ここで [CODE[head]] 
[[要素]]内の [CODE[rel=canonical]]
の値が使われるようです。
[TIME[2020-05-11T06:56:29.400Z]]

;;
[54] 
[[アドレスバー]]の長押しのメニューからの[[コピー]]では[[文書の番地]]が使われるようです。

[55] 
[[Chrome]] にも同様の機能があるようです [SRC[>>52]]。

* 歴史

[23] 
似たような意味を持つ[[リンク型]]として、他に
[CODE[rel=permalink]], [CODE[rel=bookmark]], [CODE[rel=self]]
といったものが提案されていました。


** [CODE(HTML)[rel=canonical]]

[1] [CITE[rel=canonical — Anne’s Weblog]] ([TIME[2009-02-17 10:26:13 +09:00]] 版) <http://annevankesteren.nl/2009/02/rel-canonical>

[2] [CITE[Official Google Webmaster Central Blog: Specify your canonical]] ([TIME[2009-02-28 13:56:40 +09:00]] 版) <http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html>

** [CODE(HTML)@en[rev=canonical]]

[8] [CITE@en[RevCanonical’s Blog]] ([TIME[2009-06-05 08:03:30 +09:00]] 版) <http://revcanonical.wordpress.com/>

[3] [CITE[mnot’s Web log: Counting the ways that rev="canonical" hurts the Web]] ([TIME[2009-05-27 19:02:41 +09:00]] 版) <http://www.mnot.net/blog/2009/04/14/rev_canonical_bad>

[9] [CITE[rev=canonical — Anne’s Weblog]] ([TIME[2009-08-01 09:13:09 +09:00]] 版) <http://annevankesteren.nl/2009/04/rev-canonical>

[7] [CITE[hail2u.net - Weblog - rev="canonical"]] ([TIME[2009-05-23 17:57:42 +09:00]] 版) <http://hail2u.net/blog/internet/rev-canonical.html>

[4] [CITE[hail2u.net - Weblog - rev="canonical"?rel="shorturl"?それとも・・・]] ([TIME[2009-05-23 17:57:41 +09:00]] 版) <http://hail2u.net/blog/internet/rev-canonical-rel-shorturl-or.html>


[5] 
[CODE[rel=shorturl]] も参照。

**

[10] [CITE@ja[rel=”canonical”タグの誤用でインデックスから消滅 | 海外SEO情報ブログ]]
( ([TIME[2011-03-04 07:36:33 +09:00]] 版))
<http://www.suzukikenichi.com/blog/do-not-misuse-rel-canonical/>

[11] [CITE@ja[ページネーションにおけるrel=“canonical”タグの正しい使い方 at SMX West 2011 | 海外SEO情報ブログ]]
([TIME[2011-03-17 16:42:34 +09:00]] 版)
<http://www.suzukikenichi.com/blog/correct-way-to-use-rel-canonical-for-pagenation/>

** HTTP ヘッダー

[12] [CITE[Official Google Webmaster Central Blog: Supporting rel="canonical" HTTP Headers]]
( ([TIME[2011-06-17 21:16:36 +09:00]] 版))
<http://googlewebmastercentral.blogspot.com/2011/06/supporting-relcanonical-http-headers.html>

[13] [CITE@en[RFC 6596 - The Canonical Link Relation]]
( ([TIME[2012-04-06 22:57:34 +09:00]] 版))
<https://tools.ietf.org/html/rfc6596>

**

[FIG(quote)[
[FIGCAPTION[
[14] ( ([TIME[2016-05-11 17:00:54 +09:00]]))
<http://prtimes.jp/>
]FIGCAPTION]

>         <link rel="canonical" href="http://prtimes.jp/" />
>             <link rel="canonical" href="http://prtimes.jp/" />

]FIG]


[FIG(quote)[
[FIGCAPTION[
[15] [CITE@en[Web Annotation Data Model]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/model/wd2/#h-other-identities>
]FIGCAPTION]

> canonical	Relationship	The relationship between an Annotation, Body or Target and the IRI that should be used to track its identity, regardless of where it is made accessible. If this property is set, then systems must not change or delete it. Systems should not assign a canonical IRI without prior agreement if one is not present, as the Annotation could already have a canonical IRI elsewhere. 
> There may be exactly 1 canonical IRI for each resource.

]FIG]


[16] [CITE@en[Web Annotation Vocabulary]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/vocab/wd/#h-canonical>

** HTML Standard

[17] [CITE@en[Make <link rel=canonical> a standard rel keyword]]
([[sideshowbarker]]著, [TIME[2017-04-13 08:23:24 +09:00]])
<https://github.com/whatwg/html/commit/6dc0004016b73aaa17f97d6b5e19766abba43b41>

[18] [CITE@en[rel-canonical · Microformats Wiki]]
([TIME[2017-04-15 12:45:23 +09:00]])
<http://microformats.org/wiki/rel-canonical>

**


[FIG(quote)[
[FIGCAPTION[
[46] [CITE[ブックマークレットでの URL の正規化に対応しました - はてなブックマーク日記 - 機能変更、お知らせなど]]
([TIME[2017-06-19 15:34:27 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenabookmark/20090618/1245312744>
]FIGCAPTION]

> ブックマークレットでブックマークするときに canonical URL をチェックし、ブックマークしようとしている URL が異なる場合、ナビゲーションによる正規化された URL を提示するようなインターフェイスの作成を行いました。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[47] [CITE@ja[canonicalは検索エンジンだけのものじゃない by @tsuj]]
([TIME[2017-06-19 15:35:22 +09:00]])
<http://webweb.jp/blog/seo/canonical-facebook/>
]FIGCAPTION]

> canonicalを活用しているのは検索エンジンだけではありません。Facebookやはてなブックマーク、Twitterなどソーシャルメディアもカノニカルを参考にしています。
> そのような中、canonicalを検索エンジン対策、SEOのためだけに使っているとソーシャルメディア側で問題が起きる場合もありますので注意が必要です。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[48] [CITE@en[Official Google Webmaster Central Blog: Video about pagination with rel=“next” and rel=“prev”]]
([TIME[2017-06-19 03:43:55 +09:00]])
<https://webmasters.googleblog.com/2012/03/video-about-pagination-with-relnext-and.html>
]FIGCAPTION]

> While it’s fine to set rel=”canonical” from a component URL to a single view-all page, setting the canonical to the first page of a parameter-less sequence is considered improper usage. We make no promises to honor this implementation of rel=”canonical.”

]FIG]


[FIG(quote)[
[FIGCAPTION[
[50] [CITE@ja[別々の URL  |  Mobile Friendly Websites  |  Google Developers]]
([TIME[2016-05-16 09:32:39 +09:00]])
<https://developers.google.com/webmasters/mobile-sites/mobile-seo/separate-urls?hl=ja>
]FIGCAPTION]

> パソコン用ページ(http://www.example.com/page-1)には、次のアノテーションを追加します。
> <link rel="alternate" media="only screen and (max-width: 640px)"
>  href="http://m.example.com/page-1">
> モバイル用ページ(http://m.example.com/page-1)に追加する必要があるアノテーションは次のとおりです。
> <link rel="canonical" href="http://www.example.com/page-1">
> モバイル用 URL には、パソコン用ページを指すこの rel="canonical" タグが必要です。

]FIG]


[51] [CITE@en[rel=bookmark with <link> · Issue #2899 · whatwg/html]]
([TIME[2017-08-11 13:50:32 +09:00]])
<https://github.com/whatwg/html/issues/2899>

[FIG(quote)[
[FIGCAPTION[
[52] [CITE@ja-jp[モバイル版Chrome、URLから余分なパラメータを除去して共有可能に - Engadget 日本版]]
([[山本竜也(Tatsuya Yamamoto)]]著, [TIME[2018-02-21 09:34:43 +09:00]])
<http://japanese.engadget.com/2018/02/20/chrome-url/>
]FIGCAPTION]

> この機能、ChromeがURLを自動整形しているわけではなく、サイト内で使われているcanonicalタグの内容を取得しているようです。

]FIG]
