rel="canonical" などを利用して正規 URL を指定する方法

重複ページまたは非常に類似したページの正規 URL を指定する場合、いくつかの方法で Google 検索に優先事項を伝えられます。正規化に対する効果が高い順に、以下の方法があります。

これらの方法を組み合わせて使用するとより効果的です。 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 要素

すべての重複ページのコードに、正規ページを指す <link> 要素を追加します。

長所:
  • 重複したページの数に関係なく、すべての重複ページをマッピングできる
短所:
  • 大規模なサイトや URL が頻繁に変更されるサイトでは、マッピングの管理が複雑になる場合がある
  • この方法を使用できるのは HTML ページのみで、PDF などのファイルには使用できない(その場合は rel="canonical" HTTP ヘッダーを使用可能)
rel="canonical" HTTP ヘッダー

ページのレスポンスで rel="canonical" ヘッダーを送信します。

長所:
  • ページのサイズが大きくならない
  • 重複したページの数に関係なく、すべての重複ページをマッピングできる
短所:
  • 大規模なサイトや URL が頻繁に変更されるサイトでは、マッピングの管理が複雑になる場合がある
サイトマップ

サイトマップで正規ページを指定します。

長所:

  • 特に大規模なサイトの場合、正規ページの指定や維持管理が簡単にできる

短所:

  • Google は依然として、サイトマップで宣言された正規ページに関連する重複ページを特定しなければならない
  • rel="canonical" マッピングを使用する方法に比べると、Google に対するシグナルとしての効果が弱い
リダイレクト リダイレクトを使って、指定した URL よりもリダイレクト先の URL のほうが適したバージョンであることを Googlebot に伝えます。この方法は、重複ページを廃止するときにのみ使用します。
ページの AMP バージョン ページのバージョンの 1 つが AMP ページである場合は、AMP ガイドラインに沿って正規ページと AMP バージョンを指定します。

Google は、RFC 6596 に記載されているように、明示的な rel canonical link アノテーションをサポートしています。 ページの代替バージョンを示す rel="canonical" アノテーションは無視されます。具体的には、hreflanglangmediatype 属性を持つ rel="canonical" アノテーションは正規化に使用されません。代わりに適切な link アノテーションを使用して、ページの代替バージョンを指定してください。たとえば、言語や国を指定する場合は link rel="alternate" hreflang を使用します。

rel="canonical" link アノテーションは次の 2 つの方法で指定できます。

使用する際はいずれかを選択することをおすすめします。両方の方法を同時に使用してもかまいませんが、エラーが発生しやすくなります(たとえば、HTTP ヘッダーで 1 つの URL を指定し、rel="canonical" link 要素で別の URL を指定するなど)。

rel="canonical" link 要素(canonical 要素とも呼ばれます)は、HTML の head セクションで使用される要素で、別のページがそのページの正規コンテンツであることを示しています。

さまざまな URL からアクセスできるコンテンツについて、https://example.com/dresses/green-dresses を正規 URL にしたい場合に、この URL を正規版として指定する手順を以下に示します。

  1. 正規ページを指すように属性 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 -->
  2. 別の 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 -->
  3. ページに適した 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/catshttps://example.com/de-ch/cats には hreflang アノテーションによる相互リンクがあるが、https://example.com/de-at/cats が含まれていない場合、hreflang クラスタ内にない /de-at/ ページより、de-dede-ch のページが正規 URL として優先されます。

正規化の問題のトラブルシューティングと修正について詳しくは、こちらをご覧ください。