rel="canonical" などを利用して正規 URL を指定する方法
重複ページまたは非常に類似したページの正規 URL を指定する場合、いくつかの方法で Google 検索に優先事項を伝えられます。正規化に対する効果が高い順に、以下の方法があります。
- リダイレクト: リダイレクト先が正規ページになるべきことを強く示すシグナルです。
-
rel="canonical"
link
アノテーション: 指定された URL が正規ページになるべきことを強く示すシグナルです。 - サイトマップに含める: サイトマップに含まれる URL が正規ページになることを示しますが、シグナルとしては弱いものです。
これらの方法を組み合わせて使用するとより効果的です。 2 つ以上の方法を使用すると、希望する正規 URL が検索結果に表示される可能性が高くなるということです。
上記の方法を使用することをおすすめしますが、いずれも必須ではありません。サイトは、正規化の優先事項を指定しなくても問題なく動作することもあります。正規 URL が指定されていなくても、Google 検索でユーザーに表示するのに最適な URL を Google が客観的に判断するためです。
正規 URL を指定すべき理由
通常、正規 URL を指定することはそれほど重要ではありませんが、重複または類似するページがある場合に、正規ページを Google に明示的に伝えたほうがよい理由がいくつかあります。
-
検索結果でユーザーに表示したい URL を指定するため。
たとえば、ユーザーに緑のワンピースの商品ページにアクセスしてもらえるように、URL として
https://example.com/dresses/cocktail?gclid=ABCD
ではなくhttps://www.example.com/dresses/green/greendress.html
を選ぶことができます。 -
類似ページや重複ページについてシグナルを統合するため。これにより、検索エンジンが、個々の URL について得られたシグナル(その URL へのリンクなど)を、優先すべき 1 つの URL に統合できるようになります。つまり、他のサイトからの
https://example.com/dresses/cocktail?gclid=ABCD
へのシグナルが、https://www.example.com/dresses/green/greendress.html
へのリンクに統合されます(後者が正規 URL の場合)。 - 特定のコンテンツのトラッキング指標をシンプルにするため。URL が複数あると、特定のコンテンツについて指標を統合することが難しくなります。
- 重複するページのクロールに要する時間を削減するため。サイトのウェブ プレゼンスを高めるには、同じコンテンツと重複するページではなく、新しい(または更新された)ページのクロールに Googlebot が時間をかけるほうが効果的です。
ベスト プラクティス
すべての正規化方法で、以下のベスト プラクティスに従ってください。
- 正規化の目的で robots.txt ファイルを使用しないでください。
- 正規化の目的で URL 削除ツールを使用しないでください。URL 削除ツールでは、URL のすべてのバージョンが検索で非表示になります。
-
異なる正規化方法を使用して、複数の異なる URL を同じページの正規版として指定しないでください(たとえば、ある URL をサイトマップで指定し、同じページの別の URL を
rel="canonical"
で指定しないでください)。 - Google は通常 URL フラグメントをサポートしていないため、URL フラグメントを正規版として指定しないでください。
-
1 つのサイト内で正規ページの選択を妨げる手段として
noindex
を使用することは、そのページが Google 検索から完全にブロックされてしまうため、おすすめしません。rel="canonical"
link
アノテーションがおすすめの方法です。 hreflang
要素を使用する場合は、同じ言語の正規ページを指定してください。同じ言語の正規ページが存在しない場合は、最適な代替言語のページを指定してください。- サイト内でリンクする場合は、重複 URL ではなく正規 URL にリンクしてください。 正規版にしたい URL に一貫してリンクすることで、正規版の選択に関する希望が Google に理解されやすくなります。
正規化方法の比較
次の表では、各正規化方法を比較し、さまざまな状況での管理面と有効性に関する長所と短所を示しています。
正規化の方法と説明 | |||
---|---|---|---|
rel="canonical" link 要素
|
すべての重複ページのコードに、正規ページを指す
|
||
rel="canonical" HTTP ヘッダー
|
ページのレスポンスで
|
||
サイトマップ |
サイトマップで正規ページを指定します。
|
||
リダイレクト | リダイレクトを使って、指定した URL よりもリダイレクト先の URL のほうが適したバージョンであることを Googlebot に伝えます。この方法は、重複ページを廃止するときにのみ使用します。 | ||
ページの AMP バージョン | ページのバージョンの 1 つが AMP ページである場合は、AMP ガイドラインに沿って正規ページと AMP バージョンを指定します。 |
rel="canonical"
link
アノテーションを使用する
Google は、RFC 6596 に記載されているように、明示的な rel
canonical link
アノテーションをサポートしています。
ページの代替バージョンを示す rel="canonical"
アノテーションは無視されます。具体的には、hreflang
、lang
、media
、type
属性を持つ rel="canonical"
アノテーションは正規化に使用されません。代わりに適切な link
アノテーションを使用して、ページの代替バージョンを指定してください。たとえば、言語や国を指定する場合は link
rel="alternate"
hreflang
を使用します。
rel="canonical"
link
アノテーションは次の 2 つの方法で指定できます。
使用する際はいずれかを選択することをおすすめします。両方の方法を同時に使用してもかまいませんが、エラーが発生しやすくなります(たとえば、HTTP ヘッダーで 1 つの URL を指定し、rel="canonical"
link
要素で別の URL を指定するなど)。
rel="canonical"
link
要素
rel="canonical"
link
要素(canonical 要素とも呼ばれます)は、HTML の head
セクションで使用される要素で、別のページがそのページの正規コンテンツであることを示しています。
さまざまな URL からアクセスできるコンテンツについて、https://example.com/dresses/green-dresses
を正規 URL にしたい場合に、この URL を正規版として指定する手順を以下に示します。
-
正規ページを指すように属性
rel="canonical"
を設定した<link>
要素を、重複ページの<head>
セクションに追加します。次に例を示します。<html> <head> <title>Explore the world of dresses</title> <link rel="canonical" href="https://example.com/dresses/green-dresses" /> <!-- other elements --> </head> <!-- rest of the HTML -->
-
別の URL に正規ページのモバイル版がある場合は、
rel="alternate"
link
要素を追加して、ページのモバイル版を指します。<html> <head> <title>Explore the world of dresses</title> <link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.example.com/dresses/green-dresses"> <link rel="canonical" href="https://example.com/dresses/green-dresses" /> <!-- other elements --> </head> <!-- rest of the HTML -->
-
ページに適した
hreflang
などの要素を追加します。
rel="canonical"
link
要素では、相対パスではなく絶対パスを指定します。相対パスも Google でサポートされていますが、長期的には問題が発生する可能性があるため(たとえば、意図せずにテストサイトのクロールを許可してしまうなど)おすすめしません。
良い例:
https://www.example.com/dresses/green/greendress.html
悪い例:
/dresses/green/greendress.html
rel="canonical"
link element
は、HTML の <head>
セクションに指定されている場合にのみ受け入れられるため、少なくとも <head>
セクションが有効な HTML であることを確認してください。
JavaScript を使用して rel="canonical"
link
要素を追加する場合は、必ず canonical リンク要素を適切に挿入してください。
rel="canonical"
HTTP ヘッダー
サーバーの設定を変更できる場合は、HTML 要素ではなく、RFC5988 で定義されている rel="canonical"
ターゲット属性を持つ link
HTTP レスポンス ヘッダーを使用して、検索でサポートされているドキュメント(PDF ファイルなどの HTML 以外のドキュメントを含む)の正規 URL を示せます。
Google はウェブ検索結果についてのみ、この方法をサポートしています。
PDF や Microsoft Word などの多くのファイル形式のコンテンツをそれぞれ別々の URL で公開する場合、rel="canonical"
HTTP ヘッダーを返して、HTML 以外のファイルの正規 URL を Googlebot に伝えられます。たとえば、.docx
コンテンツの PDF 版が正規であることを示すには、コンテンツの .docx
版に次の HTTP ヘッダーを追加します。
HTTP/1.1 200 OK Content-Length: 19 ... Link: <https://www.example.com/downloads/white-paper.pdf>; rel="canonical" ...
rel="canonical"
link
要素と同様に、rel="canonical"
HTTP ヘッダーでは絶対 URL を使用します。URL を囲む際に利用できるのは、RFC2616 に従って二重引用符のみです。
サイトマップを使用する
サイトの各ページについて正規 URL を選択し、それらをサイトマップに含めて送信します。サイトマップに含まれるすべてのページが正規ページとして示されるので、Google は、コンテンツの類似性に基づいて、重複ページがあるかどうか、ある場合どのページが重複しているかを判断します。
選択した正規 URL をサイトマップで示せば、大規模なサイトの正規 URL を簡単に定義できます。サイトマップは、サイトで最も重要なページを Google に伝える便利な方法です。
リダイレクトを使用する
既存の重複ページを取り除く場合は、この方法を使用してください。すべてのリダイレクト方法(301
および 302
リダイレクト、meta-refresh
、JavaScript リダイレクト)は、Google 検索に対して同じ効果がありますが、検索エンジンがリダイレクトを認識するまでの時間はそれぞれ異なります。
最も早く効果が現れるのは、3xx
HTTP リダイレクト(サーバーサイド リダイレクトとも呼ばれる)を使用した場合です。
たとえば、サイト内のあるページが次のような複数の URL でアクセス可能な状態だとします。
https://example.com/home
https://home.example.com
https://www.example.com
上記の URL のいずれかを正規 URL として選択し、リダイレクトを使用して、他の URL へのトラフィックを、選択した正規 URL に送信します。
その他のシグナル
Google では、明示的に示された方法とは別に、一般的にはサイトの設定に基づく一連の正規化シグナルも使用します。HTTP よりも HTTPS を優先する、hreflang
クラスタ内の URL を優先するなどです。
正規 URL として HTTP より HTTPS を優先する
Google では、HTTPS ページを同等の HTTP ページよりも優先的に正規 URL として選択します。ただし、以下のようにシグナルが競合する場合や問題がある場合は例外となります。
- HTTPS ページに無効な SSL 証明書が含まれている。
- HTTPS ページに安全でない依存関係が含まれている(画像以外)。
- HTTPS ページで、ユーザーを HTTP ページに(または HTTP ページ経由で)リダイレクトしている。
- HTTPS ページに HTTP ページへの
rel="canonical"
link
が含まれている。
Google のシステムは、デフォルトで HTTP ページより HTTPS ページを優先的に選択しますが、次のいずれかの措置を講じると確実に選択されるようになります。
- HTTP ページから HTTPS ページへのリダイレクトを追加する。
- HTTP ページから HTTPS ページへの
rel="canonical"
link
を追加する。 - HSTS を実装する。
Google が HTTP ページを誤って正規版と見なさないように、以下に注意してください。
- 不適切な TLS / SSL 証明書、または HTTPS から HTTP へのリダイレクトを使用しないでください。HTTP が優先される大きな要因になります。この場合、HSTS を実装してもオーバーライドされません。
-
ページの HTTPS 版ではなく、HTTP 版をサイトマップや
hreflang
アノテーションに含めないでください。 -
SSL / TLS 証明書を、誤ったホストに実装しないでください。たとえば、
example.com
の証明書をsubdomain.example.com
に実装するといったことです。証明書はサイト URL と完全に一致させるか、ドメイン内の複数のサブドメインで使用できるワイルドカード証明書にします。
hreflang
クラスタ内の URL を優先する
Google は、サイトのローカライズに対応するため、正規化のために hreflang
クラスタ内の URL を優先します。たとえば、https://example.com/de-de/cats
と https://example.com/de-ch/cats
には hreflang
アノテーションによる相互リンクがあるが、https://example.com/de-at/cats
が含まれていない場合、hreflang
クラスタ内にない /de-at/
ページより、de-de
と de-ch
のページが正規 URL として優先されます。
正規化の問題のトラブルシューティングと修正について詳しくは、こちらをご覧ください。