本文へスキップ
サイト総合診断

canonical(正規 URL)とは — 重複コンテンツを 1 つにまとめる

canonical(正規 URL)は、同じ内容が複数の URL から見えるとき、検索エンジンに「評価をまとめる代表 URL はこれ」と伝える指定です。パラメータ違いや www の有無で URL が枝分かれすると、本来 1 ページ分の評価が分散します。head 内に絶対 URL で rel=canonical を書き、正規 URL へ評価を集約します。ただし Google にとっては命令ではなくヒント扱いです。

執筆: 公開:

canonical(正規 URL)とは何ですか?

canonical は、同じ内容を持つ複数の URL のうち「これを代表とみなしてほしい」と検索エンジンに伝える指定です。head 内の link 要素に rel="canonical" と正規 URL を書きます。重複したページの評価を代表 URL へまとめ、検索結果にどの URL を出すかの判断材料になります。

「正規 URL(canonical URL)」とは、実質同じ内容を表示する複数の URL のうち、検索エンジンに代表として扱ってほしい 1 本のことです。 たとえば https://example.com/products/x100https://example.com/products/x100?utm_source=mail は、 人が見れば同じ商品ページですが、検索エンジンにとっては文字列の違う別 URLです。 この 2 つを「同じページの別入口」として束ね、評価を 1 本に寄せるための宣言が canonical です。

指定は <head> 内の <link> 要素で行います。属性は 2 つだけ、rel="canonical" と、 正規 URL を入れた href です。難しい仕組みではありませんが、後述するように「書けば必ず従ってもらえる」ものではない点が、 正しく理解しておきたいところです。

なぜ canonical が必要なのですか?

同じ内容が複数の URL から見えると、被リンクやクロールの評価がバラけ、どの URL も中途半端になりがちだからです。canonical で 1 つの正規 URL に集約すれば評価がまとまり、検索結果に意図しない URL が出るのも防げます。クローラが重複を巡回する無駄も減らせます。

重複 URL を放置すると、具体的に次のような不利益が生じます。

  • 評価の分散 — 同じ内容へのリンクが 3 つの URL に分かれると、集まるはずの評価も 3 分割される
  • 意図しない URL が検索結果に出る — パラメータ付きの URL や www 有りの URL など、見せたくない形が表示されることがある
  • クロールの無駄 — 検索エンジンが同じ内容を何度も巡回し、本当に見てほしい新しいページの発見が遅れる

canonical はこれらを、ページを削除したり URL を変えたりせずに解消するための穏当な手段です。 既存の URL はそのまま生かしつつ、評価だけを 1 本に寄せられます。

canonical はどう書きますか?

head 内に link 要素を 1 つ置き、rel="canonical" と正規 URL を絶対 URL で指定します。全ページに、そのページ自身を指す自己参照 canonical を入れておくのが基本です。相対 URL やページ内での複数指定は避け、http/https・www の有無・末尾スラッシュまで含めた完全な URL を書きます。

書き方の要点は 3 つです。絶対 URL で書く1 ページにつき 1 つだけ置く、 そしてすべてのページに「自分自身を指す」自己参照 canonical を入れることです。 自己参照はやや冗長に見えますが、パラメータ付きで開かれても正規 URL を明示できるため、重複対策として最も確実です。

自己参照 canonical(HTML)
<!-- 各ページの <head> に、そのページ自身を指す自己参照 canonical を 1 つ -->
<head>
  <link rel="canonical" href="https://example.com/products/x100">
</head>

<!-- パラメータ付き URL で開かれても、canonical は正規 URL(パラメータ無し)を指す。
     例: https://example.com/products/x100?utm_source=mail を開いても、
     head の中身は同じ正規 URL のまま -->
<head>
  <link rel="canonical" href="https://example.com/products/x100">
</head>

静的な HTML なら上のように <head> へ直接書きます。フレームワークを使っているなら、 テンプレート側で URL を組み立てて出力するのが安全です。Next.js(App Router)なら metadataalternates.canonical で宣言できます。

Next.js(App Router)での指定
// Next.js(App Router)の例。各ページの metadata で canonical を宣言する。
// BASE は https://example.com のような本番の絶対 URL。
export const metadata = {
  alternates: {
    canonical: `${BASE}/products/x100`,
  },
};

どんなときに重複 URL が生まれますか?

主にパラメータの付与(?utm= や並び替え)、www の有無、末尾スラッシュの有無、http と https、URL の大文字小文字の違いで生まれます。人には同じページに見えても、検索エンジンは文字が 1 つでも違えば別 URL として扱います。CMS や広告のトラッキングが自動で枝分かれを増やすことも多いです。

「自分のサイトに重複なんて無い」と思っていても、次のような形で意図せず別 URL が量産されていることがよくあります。 いずれも人には同じページに見えますが、検索エンジンは 1 文字の違いも別 URL として扱います。

重複 URL が生まれる代表的なパターンと正規化の方針
パターン別 URL になる例正規化の方針
パラメータ/x100/x100?utm_source=mailパラメータ無しの URL を正規にする
www の有無example.comwww.example.comどちらか一方に統一し 301 で寄せる
末尾スラッシュ/guide/guide/サイト全体でどちらかに統一する
http / httpshttp://https://https へ 301 で統一する
大文字小文字/Guide/guide小文字に統一する

表の「正規化の方針」に 301 リダイレクトが出てくる点に注目してください。www の有無や http/https のようにURL を完全に一本化できる場合は、canonical より 301 リダイレクトのほうが強く確実です。 canonical はあくまで「複数の URL を残したまま評価だけ寄せる」ための手段で、両者は役割が違います。

canonical でありがちな誤りは何ですか?

相対 URL での指定、全ページが同じ 1 つの URL を指す設定、noindex との併用、そして 301 リダイレクトで済む場面での誤用が代表例です。特に「全ページ同一 canonical」はトップ以外が検索から消える事故につながります。canonical は内容が実質同一の URL 群にだけ使います。

よくある NG と正しい書き方
<!-- NG: 相対 URL。ドメインが欠けると解釈がぶれる。必ず絶対 URL で -->
<link rel="canonical" href="/products/x100">

<!-- NG: 全ページが同じ 1 つの URL を指す。
     内容の違うページまで「トップと同一」と申告し、トップ以外が検索から消える事故 -->
<link rel="canonical" href="https://example.com/">

<!-- OK: 絶対 URL で、そのページ自身の正規 URL を指す -->
<link rel="canonical" href="https://example.com/products/x100">

特に事故が大きいのが、全ページが同じ 1 つの URL を指してしまう設定です。 テンプレートで canonical をハードコードした結果、個別記事や商品ページまでトップページを正規 URL として申告し、 それらが検索結果から消える、という典型があります。canonical は「このページの正規形」を指すもので、 「サイトの代表ページ」を指すものではありません。

canonical と 301 リダイレクトは、下の表のように使い分けます。

canonical と 301 リダイレクトの使い分け
観点rel=canonical301 リダイレクト
URL は残る?残る(両方アクセス可)残らない(正規 URL へ転送)
拘束力ヒント(従わないことがある)強い(原則そのまま従う)
向く場面パラメータ違いなど URL を残したいときwww/http など URL を一本化できるとき
利用者の遷移変わらない自動で正規 URL へ移動する

canonical を書けば必ず従ってもらえますか?

いいえ。Google にとって canonical は命令ではなくヒントです。sitemap の内容・内部リンク・リダイレクト・ページ内容の一致度など複数の手がかりを総合し、指定と別の URL を正規と判断することもあります。指定と矛盾する手がかりを残さないことが、意図どおり集約させるコツです。

ここは誤解されやすい重要な点です。Google は canonical を「強い手がかりの 1 つ」として扱うが、命令とはみなさないと明言しています。 Google は canonical タグのほかに、次のような複数の手がかりを総合して正規 URL を自分で選びます。

  • 内部リンク — サイト内から実際にどの URL がリンクされているか
  • sitemap.xmlサイトマップにどの URL を載せているか
  • リダイレクト — 301 でどの URL に寄せているか
  • 内容の一致度 — canonical 先とページ内容が本当に同じか

したがって、canonical だけを正しく書いても、内部リンクや sitemap が別の URL を指していれば、Google はそちらを正規と選ぶことがあります。 意図どおり集約させたいなら、canonical・内部リンク・sitemap・リダイレクトのすべてを同じ正規 URL にそろえ、矛盾する手がかりを残さないことが肝心です。

指定した canonical が効いているか、どう確認しますか?

ページのソースで head 内の link rel=canonical を確認し、Google Search Console の URL 検査で「Google が選択した正規 URL」を見ます。指定と Google の選択が一致していれば意図どおりです。食い違うときは、内部リンクや sitemap が別 URL を指していないかを見直します。

確認は 2 段階で行います。まず自分の書いた指定、次にGoogle が実際にどう判断したかです。

  • 指定の確認 — ブラウザでページのソースを開き、<head> 内の link rel="canonical" が 意図した絶対 URL を 1 つだけ指しているかを見る
  • 判断の確認 — Google Search Console の「URL 検査」で、「Google が選択した正規 URL」を確認する。 ここが自分の指定と一致していれば意図どおり

もし指定と Google の選択が食い違っていたら、それは canonical だけの問題ではありません。 内部リンクや sitemap が別 URL を指していないか、301 の向きが逆になっていないかを、 あわせて見直してください。内部リンクの張り先を正規 URL にそろえるだけで解決することも少なくありません。

参考にした一次情報

関連する解説

自分のサイトは、実際どうなっているか

この記事で説明した項目は、すべて無料の診断ツールで実測できます。URL を入れるだけ・登録不要です。

無料で診断する