HTMLタグの一つであるlinkタグの属性の一つで、重複しているページを一つにまとめるためのタグです。一般的にクローラーに向けて情報を提供するタグのため、実際のブラウザには表示されません。
canonicalはheadタグ(<head>)内に記述します。
ネット上に存在している重複ページに、正しいURLとして正規化したいURLを下記のようにhrefを使用して記述します。
ページ内で1つしか設置しません。複数のcanonicalを設置するとクローラーは正しく内容を読み取れない可能性もあります。
また、正規のURLに設置することも可能です。※Bingは非推奨のようです。
ネットではその仕組み上同じ内容なのにURLが違うというページが出来上がってしまいます。例えば
- http://exmple.com/
- http://www.exmple.com/
- http://exmple.com/index.html
- http://www.exmple.com/index.html
これらのページは同じ「index.html」という一つのファイルから作り出されています。同じファイルを使用しているので、もちろん内容は全て同じです。しかし、Googleは表示されるURLが一文字でも異なれば、別のページとして扱います。そのため、「同じコンテンツを入れている違うページ」という重複ページが生まれてしまいます。
Googleは1つずつのページを評価するため、別のページと判断されれば例え同じファイルを使ったページであっても評価は分散されます。
これだけではなく、同じコンテンツが使われていれば例え使用しているファイルが違っていてもGoogleは重複していると判断します。
上記のように重複するサイトがネット上にあることで、Googleはそのサイトをインデックスする際に評価を分散させてしまいます。同じコンテンツを使っているのに評価が分散されてしまっては正しい評価を受けることが出来ません。そこで、Googleに「このURLが正しいURLなので、こちらを評価してください」と教えておく必要があります。
その役割を担うのがcanonicalタグです。
canonicalタグに記述されたURLをGoogleは正規URLとして、正しい評価を集中させてくれます。
実際にcanonicalを使った正規化が必要なページは下記のような場合です。
- www有りとwww無し
- index.html有りとindex.html無し
- index.php有りとindex.php無し
- httpとhttps
- 末尾スラッシュの有りと無し
これらは同一のファイルを使用しているのにURLが別のページが表示されてしまい重複するケースです。
他にも、スマホとパソコンで別のURLを使用している場合はアノテーションタグと合わせて、ショッピングサイトなどで色だけが違う商品ページなどなど、様々なコンテンツ重複をこのタグで防ぐ事が出来ます。
こちらでも詳しく解説をしているので、読んでみてください。