MENU
超高機能SEOツール
SE Ranking

URLの正規化方法 canonical属性の使い方

Search Times

URLの正規化とは

URLの正規化とは、重複する、または類似のコンテンツで分散している検索エンジンの被リンク評価を、正規のURLに統合してもらう事を意味します。
Googleは特に何もしなくても重複するURLを一つのURLに集約しようとします。

例えば「url.htm?utm=greencheeseandham」と「url.htm」の二つのURLで共通するコンテンツが表示されていた場合には、短い方のURL 「url.htm」 で正規化されます。

ただし、必ずしもウェブサイト運営者の思う通りに評価が統合されるとは限りません。
評価やインデックスをコントロールする為には、canonical属性で正規URLを指定しておきましょう。

canonical属性とは

canonical属性とは、この正規URLを指定する際に使用する記述方法です。
canonicalはカノニカルと発音し、英語では「正統」、「標準」といった意味になります。

canonical属性で正規URLの指定が必要な理由

以下のようなケースでは表示される内容は同じであっても、URLのパターンは複数存在します。

正規化の必要性がある様々なURLパターン

有りのバーション無しのバーション
wwwhttp://www.allegro-inc.comhttp://allegro-inc.com
index.htmlhttps://www.allegro-inc.com/index.htmlhttps://www.allegro-inc.com
httpshttps://www.allegro-inc.comhttp://www.allegro-inc.com
パラーメータhttps://www.allegro-inc.com/?ref=bloghttps://www.allegro-inc.com
正規化の必要性がある様々なURLパターン

Googleは、このような複数のパターンのURLを別のページとして認識してそれぞれ評価してしまいます。または自動的に重複するページとして評価を統合する事もありますが、そうでない場合もあり得ます。

canonical属性を使用する事でこのような複数のURLパターンに分散してしまう被リンク評価を一つのURLに統合する事ができます。

評価の分散を防ぐためには、自身のウェブサイトのリンクの張り方を統一するという方法が有効ですが、外部サイトからのリンクに関してはコントロールできません。このような場合を想定してcanonical属性を使用して正規URLを指定しておくと評価を統合する事ができます。

正規化のイメージ
Google for Developers
rel="canonical" などを利用して正規ページを指定する方法 | Google 検索セントラル  |  ドキュメント  |  ... コンテンツ、URL が重複している場合、Google が正規 URL を選択します。正規 URL を管理するための canonical(カノニカル)タグの活用やその他 URL 正規化の方法を解説し...

これらの他にもABテストを実施する際にもcanonical属性を使用します。詳しくは「Webサイトテスト時にGoogle検索への影響を抑える方法」をご覧ください。

正規URLの指定方法

canonical属性を使用した正規URLの指定方法は以下の2パターンあります。

  1. HTMLのheadタグ内に記述する方法
  2. HTTPヘッダーで指定する方法
  3. XMLサイトマップで正規URLをまとめる(1,2の方法よりは強制力が弱い)

1の方法は最も一般的な方法で、2の方法は例えばPDFファイルなど、1の方法で指定できない場合に代わりにHTTPヘッダーでcanonical属性を指定する事ができます。3の方法も検索エンジンが正規URLを判断する際のシグナルになるようです。

It’s normal to have some duplicate content on your site, but you want to give search engines as many hints as you can about which version should be canonical (I.e. shown in search results). Sitemaps is one of those hints. Not as strong as rel-canonical and definitely not even near redirects, but it can be useful still.

Gary Illyesのコメント

HTMLのheadタグ内に記述する方法

以下のようにheadタグ内に記述する事で、wwwあり、なし、パラメータ付のurlなどを一つのURLに正規化し、検索エンジンのインデックスを統一する事ができます。

<head>

<link rel=”canonical” href=”https://example.com/product.php”>

</head>

HTTPヘッダーで指定する方法

例えば、コンテンツが同じで、以下の2つのURLが存在したとします。white-paper.pdfのHTML版がwhite-paper.htmlです

  • http://www.example.com/white-paper.html
  • http://www.example.com/white-paper.pdf

canonical属性を指定しなければ、Googleはどちらも別々のURLとして判断する為、リンク評価が分散してしまいます。
しかし、一方はPDFファイルの為、HTMLではない為、headタグ内にcanonical属性は記述できません。

このような場合はGoogleが「http://www.example.com/white-paper.pdf」にアクセスした際にHTTPヘッダーを使ってHTML版のURL「http://www.example.com/white-paper.html」が正規なURLである事を示して、評価を統合する事ができます。

設定後に確認するにはChromeであれば検証機能の「Network」タブをクリックして、該当のファイルを選択します。
次のように表示されているか確認しましょう。

GET /white-paper.pdf HTTP/1.1
Host: www.example.com
(…以下、他の HTTP リクエスト ヘッダー…)
HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <http://www.example.com/white-paper.html>; rel=”canonical
Content-Length: 785710
(…以下、他の HTTP レスポンス ヘッダー…)

Google ウェブマスター向け公式ブ...
HTTP ヘッダーでの rel="canonical" 属性に対応しました Google フレンドリーなサイト制作・運営に関するウェブマスター向け公式情報

正規化に関するよくある質問

GoogleはJavaScriptで記述されるcanonicalも処理する?

Googleはレンダリング後にクライアントサイド追加されるcanonicalは無視していましたが、一転して処理できるようになったようです。John Mueller氏が認めています。

別のドメインのURLへ正規化する事はできる?

以前はシンジケーション コンテンツを管理し評価を統合するために、異なるドメイン間でもcanonical属性は利用できていました。例えばショッピングサイトを複数運営していて、同一の商材を扱っている場合などは理論上はドメインをまたいで使用する事ができます。ただしプラットフォーム側で制限が設けられている場合がほとんどかもしれません。(理由は、別のプラットフォームへ評価が統合されてしまうと、自身のプラットフォームが検索結果に掲載されなくなってしまうからです。)

現在では、シンジケーションコンテンツの管理でcanonical属性を使用することは推奨から外れました(禁止されているわけではありません)。実際はドメイン間をまたがるcanonical URLの指定は無視されることがほとんどのようです。

Googleニュースでは代わりにnoindexを配信パートナーのサイトに付与することを推奨しています。重複コンテンツを避けてオリジナルの記事の評価を保つのであれば推奨に従う必要があり、そうでなければ特に何もする必要はありません。
Google ニュースでの記事の重複を避ける

正規化の際には301リダイレクトとcanonicalのどちらを使用すべき?

Googleからすると、rel=”canonical”は301リダイレクトのように作用します。一方で301リダイレクトと比べると、rel=canonicalは検索エンジン向けの記述で、閲覧者に対しては機能的には作用しません。
基本的には301を使用して正規化を行いつつ、外部サイトからパラメーター付でリンクされる事もある為、canonical属性も記述しておくと良いでしょう。

属性の順番はGoogleの認識に影響する?

いいえ。例えば以下の二つの記述はどちらも有効です。

<link rel=”canonical” href=”https://example.com” />
<link href=”https://example.com” rel=”canonical” />

Does the order of the canonical tag and URL in HTML matter? from r/TechSEO

正規化の注意点

正規化処理が行われるまでの時間

実際は、canonical属性によるURL正規化を行ったからといってすぐにGoogleの方で認識されるという事はないようです。リクエストとして受け取り、指定ミスの可能性が無いか確かめた上で最終的に処理されるようです。
その為、URLが正規化されるまでにはある程度時間がかかるようです。

John Mueller氏のコメントでは、rel=canonicalを指定したからといって、記述通りに処理されない事もあるようです。正規化を決定する為に、Googleは複数の要素を見ている為、このような事は起こり得るようです。

良くあるミスとしては、ウェブサイト内の全てのページでトップページを正規URLに指定しているケースがあります。このような場合はGoogleはミスとして認識して、記述自体を無視するようです。

URL内の/(スラッシュ)の有無による認識の違い

GoogleのJohn Muller氏のコメントでは、/(スラッシュ)の有無や位置によってGoogleに認識の違いが生じるようです。

  1. http://www.example.com/
  2. http://www.example.com
  3. https://www.example.com/
  4. https://www.example.com
  5. https://example.com/
  6. https://example.com/fish
  7. https://example.com/fish/

①と②、③と④のようなホスト名の後のスラッシュの有無で問題は生じないようです。つまり①と②は同じ、③と④は同じと認識されます。

一方でホスト名とプロトコルでは、異なるURLとして扱われます。つまり①と③は異なり、③と⑤も異なる為、別のURLとして認識されます。

パス/ファイル上のスラッシュの扱いも同様に別のURLとして認識されます。つまり⑥と⑦は別のURLとして認識されます。

ページネーションで2ページ目以降から1ページ目に正規化してはいけない

ページネーションで使用するページに重複コンテンツはないはずです。このような使い方をすると、ページネーションの2番目のページは表示されても、3ページ目以降は検索結果から除外される場合があり、コンテンツの評価を失うことになります。
検索結果に1ページ目を表示させたい場合はページネーションで使用するページを一つにまとめたコンポーネントページを作り、そこに向けてrel=canonicalを指定する方法があります。

rel=canonicalで指定するURLは絶対パスを記述

URLの指定は、絶対パスと相対パスというものがあります。絶対パスの場合は、「https://」から記述します。相対パスではwwwの有無、http/httpsの判別、サブドメインかどうかの判断などが曖昧なため、絶対パスを指定する必要があるようです。

PSA from my inbox: don’t use relative paths in your rel-canonical.

Just don’t. Spell it out:

<link rel=”canonical” href=”https://example.com/cats” />

The few bytes you could save wouldn’t break the bank anyway.

Gary Illyes氏のコメント

このほか、記述上で「href=”www.allegro-inc.com”」と指定してしまうミスは一般的に多いかもしれません。検索エンジンは「http://www.allegro-inc.com/www.allegro-inc.com」として認識してしまいます。

その他一般的な注意点

  • 重複しているページコンテンツと正規化したURLのコンテンツの大部分が同じである事を確認する。
    扱うトピックは類似したものであっても、全く同じ単語や文章でなかった場合にはcanonicalの指定は無視されるかもしれません。
  • rel=canonicalのターゲットが存在するか確認する(404エラー、ソフト404がない)
    ソフト404はページ上では404エラーと表示されていても、サーバーからは404エラーをブラウザに返していない状態を言います。
  • rel=canonicalのターゲットがrobotsメタタグでnoindexとなっていないか確認する。
  • rel=canonicalで指定したURLは検索結果に表示させたいURLであるか確認する。誤って正規ではない重複するURLを指定していない事を確認しましょう。
  • rel=canonicalのリンクがhttpヘッダーまたはページの<head>タグ内に含まれている事を確認する。
  • rel=canonicalがページ内に複数存在していないか確認する。
    複数あると検索エンジンに無視されます。
  • 正規化の為にrobots.txtを使用しない。robots.txtで重複コンテンツをブロックすると各ページの評価を失い、結果的に評価が薄まってしまいます。
  • 正規化に指定するURLはピュニコード化されていても、されていなくてもどちらもGoogleは認識できる。

canonicalのエラーを一括で抽出する方法

SE RankingのサイトSEO検査ツールでは、canonicalの指定ミスも含め、ウェブサイトの全てのページのSEOに関する問題点を抽出してくれます。以下の手順で操作をお試しください。

STEP
SE Rankingのアカウントを作成

クレジットカード登録不要で、2週間無料のトライアルアカウントを作成できます。以下のページから登録をお試しください。

14日間無料トライアルに申し込む

STEP
プロジェクトを作成

以下の導入手順を参考に、プロジェクトを作成します。

導入手順

STEP
サイトSEO検査を実施

SE Rankingにログインし、左メニューの「サイトSEO検査」にアクセスし、検査を実行します。

サイトSEO検査
STEP
「問題点レポート」にアクセス

検査完了後に、左メニューの「サイトSEO検査」内のサブセクションの「問題点レポート」にアクセスします。
重複コンテンツやcanonicalの指定ミスに関するエラーが一括で抽出されます。エラーが表示されている場合は、表の「ページ」列の数字部分をクリックして、該当ページを確認しましょう。

SE Rankingの競合&キーワード調査ツール

この記事を書いた人

SEOは考え方はシンプルですが、いざ実践するとなかなか思うようにいきません。
当ブログでは、読者の方に成功も失敗も合わせて情報を共有し、同じような悩みを解決できればという思いで運営しています。
【著書】
分析が導く 最新SEOプラクティカルガイド」(2022年5月27日発売 技術評論社)
最強の効果を生みだす 新しいSEOの教科書」(2017年9月20日発売 技術評論社)

>>著者情報の詳細

Search Times
閉じる