30秒で理解
canonical(正規URL)は、同じ、または非常によく似た内容に複数のURLがあるとき、代表として扱ってほしいURLを検索エンジンへ伝える仕組みです。
たとえば、商品ページが ?color=red や ?sort=popular のようなパラメータ付きURLでも開けるとします。内容がほぼ同じなら、検索で代表にしたいURLを1つ決めます。その希望を伝える手段が rel="canonical" です。
同じ書類を複数のフォルダーに置いたとき、「原本はこのフォルダー」と付箋を貼る作業に似ています。付箋を貼っても、書類の中身やフォルダーの運用が矛盾していれば、検索エンジンが別のフォルダーを代表に選ぶことがあります。
どういう仕組みか
Googleは、似たページを見つけるとページ群をまとめ、その中から検索ユーザーにとって代表的で有用だと判断したURLを正規URLとして選びます。サイト側が希望を示すことはできますが、指定したURLが必ず採用されるわけではありません。
| 役割 | 何をするか | 強さの位置づけ |
|---|---|---|
rel="canonical" | 重複ページのHTML <head>から代表URLを示す | 強いシグナル |
| リダイレクト | 旧URLへのアクセスを代表URLへ送る | 重複ページを廃止するときの強いシグナル |
| サイトマップ | 代表にしたいURLを掲載する | 補助的で弱いシグナル |
| Googleの選択 | ページ内容や技術的なシグナルを総合して代表URLを決める | 最終判断 |
canonicalは検索結果からページを隠す指示ではありません。検索結果への登録を止めたい場合は、ページを取得できる状態で noindex の使い方を切り分けます。クロールを制御する robots.txt とも役割が違います。
どこで見えるか
設定した希望と、Googleが実際に選んだ正規URLは分けて確認します。HTMLを見ただけでは、Google側の最終判断までは分かりません。
| 知りたいこと | 開く場所 | 見る項目 |
|---|---|---|
| 自分が指定したURL | 対象ページのHTMLソース | <head>内の rel="canonical" |
| Googleが選んだURL | Search Console → URL検査 | 「Google が選択した正規 URL」 |
| 登録状態と取得状態 | Search Console → URL検査 | インデックス登録の結果、クロール、ライブテスト |
| 複数URLの傾向 | Search Console → ページのインデックス登録 | 重複や正規URLに関する理由 |
特定ページの調査では、まず Search Console の URL 検査 で完全なURLを入力します。指定したcanonicalとGoogleが選んだURLが違っていたら、canonicalタグだけを直すのではなく、リダイレクト、サイトマップ、内部リンク、ページ内容の差も並べて見ます。
実装するときの基本
HTMLページなら、重複ページの <head> に代表URLを指すリンク要素を置きます。代表ページ自身にも自己参照のcanonicalを置く構成にします。URLは相対パスではなく、https:// から始まる絶対URLにします。
| 状態 | 設定例 | 判定 |
|---|---|---|
| 色違いページを1つにまとめる | <link rel="canonical" href="代表URL" /> | 実際のHTMLでは、代表ページの絶対URLを指定する |
| 代表ページ自身 | 同じページのURLを href に指定 | ページの自己参照になっている |
| PDFなどHTML以外 | HTTPレスポンスの Link ヘッダーで指定 | 本文ではなくレスポンスヘッダーを確認する |
| 旧ページを廃止 | サーバー側の恒久的リダイレクト | 旧URLが代表URLへ移動する |
同じページについて、サイトマップとcanonicalタグで別々のURLを代表にしないでください。CMSが自動出力するタグ、テンプレート、サイトマップのURLを同じ基準でそろえます。
よくある誤解
canonicalは「このURLを必ず採用せよ」という命令ではありません。Googleが別のURLを選んだ場合は、指定の存在だけでなく、ページの内容、リダイレクト、内部リンク、サイトマップが同じURLを指しているかを調べます。
| 誤解 | 実際の扱い |
|---|---|
| canonicalを付ければ重複ページが検索から消える | 代表URLを伝える仕組みです。重複ページの登録を完全に止める指示ではありません |
| robots.txtにcanonicalを書けばよい | robots.txtは正規URLを指定する場所ではありません |
| noindexの代わりになる | noindexは検索結果への登録を抑える指示です。正規URLを選ぶ目的で使い分けます |
| どのページにも別ドメインを指定してよい | 内容や運用の根拠がないクロスドメイン指定は、意図しない正規化の原因になります |
| タグがHTMLにあればGoogleも同じURLを選ぶ | Search ConsoleのURL検査で「Googleが選択した正規URL」を確認します |
これを踏まえて何をするか
「重複ページがあるかもしれない」と感じたら、サイト全体を一度に直さず、まず代表URLにしたい1ページと、その重複候補を1組に絞ります。
| 順番 | 開く場所 | 操作 | 次の判断 |
|---|---|---|---|
| 1 | Search Console → URL検査 | 代表にしたい完全なURLを入力し、「Googleが選択した正規URL」を開く | 自分の希望と一致するか記録する |
| 2 | 対象ページのHTMLソース | <head>の rel="canonical" を検索する | 無い、空、または別URLならテンプレートやCMS設定を開く |
| 3 | サイトマップ | 代表URLと重複候補のどちらが掲載されているかを見る | 代表URLにそろえる |
| 4 | サイト内リンク | ナビゲーションや本文がどのURLを指すか確認する | 重複URLではなく代表URLへ直す |
| 5 | Search Console → URL検査 | 「ライブテスト」で現在のHTMLを取得し、修正後のcanonicalを確認する | Googleの選択結果と差が残れば、内容やリダイレクトも調べる |
| 6 | URL検査 → インデックス登録をリクエスト | 修正した重要URLだけリクエストする | 反映を待ち、後日「Googleが選択した正規URL」を再確認する |
旧URLを今後使わないなら、canonicalタグを足すだけで終わらせず、サーバー側の301 Redirectを検討します。URLを残したまま内容を提供するならcanonical、URL自体を廃止するならリダイレクト、検索結果に出したくないなら noindex というように、目的で操作を選びます。
最初に押す場所は、Search Consoleの「URL検査」です。代表にしたいURLを入力し、「Googleが選択した正規URL」が自分の意図と一致しているかを確認してください。
失敗したときの切り分け
| 起きていること | まず見る場所 | 対応 |
|---|---|---|
| Googleが別URLを選んだ | URL検査の「Googleが選択した正規URL」 | 指定URL、内部リンク、サイトマップ、リダイレクトの不一致を探す |
| canonicalが意図せず全ページ同じ | HTMLソースとCMSテンプレート | ページごとのURLを出力する設定を確認する |
| HTTPとHTTPSが混在する | リダイレクトとサイトマップ | HTTPS側へ統一し、canonicalとサイトマップのURLをそろえる |
| パラメータURLが大量に出る | 内部リンクとURL生成処理 | 不要なURLを作らない設計にし、必要な重複ページだけ代表URLを指定する |
| 修正直後も結果が変わらない | URL検査の登録結果 | 反映待ちとして記録し、同じURLを後日再検査する |
判定がつかない場合は、Search ConsoleのURL検査で、代表URLと重複候補をそれぞれ調べた結果を保存します。2つの結果で「Googleが選択した正規URL」が同じか、クロール日時と登録状態が一致しているかを比べると、タグの問題なのか、ページ内容や配信設定の問題なのかを分けられます。