CreaTools LogoCreaTools
Tips

canonicalタグの設定ガイド|重複コンテンツはこれで解決する

2026-07-25

結論:canonical は「正規URLの申告」

canonical タグがやることは1つ。同じ(ほぼ同じ)内容のページが複数のURLで見えるとき、「評価を集めてほしい本命のURLはこれ」と Google に申告するだけ。

<link rel="canonical" href="https://example.com/blog/first-post" />

これを <head> 内に1行置く。それだけ。

なぜ必要かというと、同じ内容のURLが複数あると、リンクや評価がURLごとに分散するから。10本の被リンクが2つのURLに5本ずつ割れるより、1つのURLに10本集まったほうが強い。canonical はその「集約先」を指定する仕組み。

先に効果の範囲をはっきりさせておく。

  • やってくれること … 分散した評価を正規URLに集約する。検索結果に出すURLをそろえる
  • やってくれないこと … 順位を直接上げること。ペナルティの解除(そもそも通常の重複コンテンツにペナルティはない)

「重複コンテンツはペナルティになる」とよく言われるが、同一サイト内の重複でペナルティを受けることは基本的にない。 起きるのは評価の分散と、意図しないURLが検索結果に出ること。canonical はその整理役。


重複URLはこうして生まれる

「同じページを複数URLで公開した覚えはない」と思っていても、重複は勝手に生まれる。典型はこれ。

パターン
www の有無https://www.example.com/https://example.com/
http と httpshttp://example.com/https://example.com/
末尾スラッシュ/blog/post//blog/post
index.html//index.html
URLパラメータ/items?id=1/items?id=1&utm_source=x
モバイル用URLexample.com/pagem.example.com/page

Google はこれらをすべて別のURLとして扱う。中身が同じでもURLが違えば別ページ。計測用の utm_ パラメータ付きURLがSNSで拡散されるだけで、重複は簡単に発生する。

まず自分のサイトで site:example.com を検索してみると、意図しないURLがインデックスされていないか確認できる。


書き方と設置ルール

<head> 内に、絶対URLで書く。

<head>
  <link rel="canonical" href="https://example.com/blog/first-post" />
</head>

押さえるルールは4つ。

  • 絶対URLで書く/blog/first-post のような相対パスは事故のもと)
  • 1ページに1つだけ(複数あると全部無視される)
  • 正規URL自身にも置く(自己参照canonical。パラメータ付きでアクセスされたときの保険になる)
  • <head> 内に置く<body> 内の canonical は無視される)

自己参照 canonical は「自分が正規です」と書くだけだが、これがあると ?utm_source=twitter 付きでアクセス・共有されても評価が元URLに集まる。全ページに自己参照 canonical を置くのが現代の標準構成。


canonical と 301リダイレクトの使い分け

「URLを1つにまとめる」手段はもう1つある。301リダイレクト。役割がよく混同されるので整理する。

301リダイレクトcanonical
ユーザーのアクセス転送される(旧URLは見えない)そのまま見える
強制力強い(確定的)弱い(Googleへの「提案」)
使いどころ旧URLをもう使わないとき両方のURLを生かしたいとき

判断基準はシンプルで、「そのURL、ユーザーに見せ続ける必要があるか」

  • サイト移転・URL変更・http→https … 旧URLは不要 → 301リダイレクト
  • パラメータ付きURL・絞り込み一覧・印刷用ページ … 表示自体は必要 → canonical

www の有無や末尾スラッシュの統一も、本来は301でそろえるのが確実。canonical はあくまで「リダイレクトできない・したくない事情があるとき」の手段。リダイレクトの設定方法は WordPressのリダイレクト設定ガイド にまとめてある。

もう1つ重要な違いとして、canonical は Google に無視されることがある。 2つのページの内容が大きく違う場合や、他のシグナル(内部リンク、sitemap)が別のURLを指している場合、Google は申告と違うURLを正規に選ぶ。Search Console の「ページ」レポートに出る「重複しています。ユーザーにより、正規ページとして選択されていません」がまさにこの状態。


Next.js / WordPress での設定方法

Next.js(App Router)

Metadata API の alternates.canonical を使う。

export const metadata = {
  alternates: {
    canonical: "https://example.com/blog/first-post",
  },
};

動的ページなら generateMetadata で組み立てる。

export async function generateMetadata({ params }) {
  const { slug } = await params;
  return {
    alternates: {
      canonical: `https://example.com/blog/${slug}`,
    },
  };
}

layout.tsxmetadataBase を設定しておけば、相対パスで書いても絶対URLに解決してくれる。

WordPress

Yoast SEO / All in One SEO などの主要SEOプラグインが自己参照 canonical を自動出力している。 まずページのソースで rel="canonical" を検索して、すでに出ていないか確認する。手動で <head> に追加すると二重になって両方無視されるのが典型事故。

正規URLを変えたいページだけ、プラグインの記事編集画面にある「正規URL(canonical URL)」欄で上書きする。


検証方法:設定したら必ず確認する

canonical は書き間違えても見た目に一切影響がないので、壊れていても気づけない。確認までがセット。

方法見るポイント
Meta Checkercanonical の有無・URLを title / OGP とまとめて確認
ページのソース表示rel="canonical" が1つだけ・<head> 内にあるか
Search Console のURL検査「ユーザーが指定した正規URL」と「Googleが選択した正規URL」が一致しているか

特に Search Console のURL検査は重要で、「Googleが選択した正規URL」が自分の指定と違っていたら、canonical が無視されているということ。内部リンクや sitemap.xml が指すURLと canonical がズレていないかを疑う。


やりがちなミス5つ

ミス1:全ページがトップページを指している

テンプレートに href="https://example.com/" と固定で書いてしまうパターン。全ページが「トップページが正規です」と申告していることになり、最悪サイト全体がトップページ1枚に集約されかねない。canonical は必ずページごとに動的に出す。

ミス2:ページネーションの2ページ目以降を1ページ目に向ける

/blog?page=2 の canonical を /blog に向けるのは誤り。2ページ目は1ページ目の複製ではなく別の内容。内容が違うページに canonical を張っても無視されるか、2ページ目以降がインデックスから消える。ページネーションは各ページ自己参照が正解。

ミス3:canonical と他のシグナルが矛盾している

canonical は A を指しているのに、sitemap には B を載せ、内部リンクも B に張っている——この状態だと Google はシグナル多数決で B を正規に選ぶことがある。canonical・sitemap・内部リンクの3つは同じURLにそろえる。

ミス4:noindex と併用する

「canonical で集約しつつ noindex も入れておこう」は矛盾シグナル。canonical は「このページの評価をあちらへ」、noindex は「このページを無視して」。組み合わせると canonical 側の効果が失われる恐れがある。集約したいなら canonical だけにする。

ミス5:httpsサイトで http のURLを指定している

サイトをSSL化したのに canonical が http:// のまま、というパターン。テンプレートの書き換え漏れで起きる。正規URLは今実際に使っているプロトコル・ドメインと一致させる。


まとめ

  • canonical は「同じ内容の複数URLから、評価を集める正規URLを申告する」タグ。順位を直接上げるものではない
  • 重複は www の有無・末尾スラッシュ・URLパラメータなどで勝手に生まれる。全ページに自己参照 canonical を置くのが標準構成
  • 旧URLを捨てるなら301リダイレクト、両方のURLを生かすなら canonical
  • canonical は「提案」であり、内部リンクや sitemap と矛盾すると Google に無視される。3つのシグナルをそろえる
  • 設定しても見た目は変わらないので、Meta Checker や Search Console のURL検査で確認までやって完了