canonicalタグの設定ガイド|重複コンテンツはこれで解決する
結論: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 と https | http://example.com/ と https://example.com/ |
| 末尾スラッシュ | /blog/post/ と /blog/post |
| index.html | / と /index.html |
| URLパラメータ | /items?id=1 と /items?id=1&utm_source=x |
| モバイル用URL | example.com/page と m.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.tsx の metadataBase を設定しておけば、相対パスで書いても絶対URLに解決してくれる。
WordPress
Yoast SEO / All in One SEO などの主要SEOプラグインが自己参照 canonical を自動出力している。 まずページのソースで rel="canonical" を検索して、すでに出ていないか確認する。手動で <head> に追加すると二重になって両方無視されるのが典型事故。
正規URLを変えたいページだけ、プラグインの記事編集画面にある「正規URL(canonical URL)」欄で上書きする。
検証方法:設定したら必ず確認する
canonical は書き間違えても見た目に一切影響がないので、壊れていても気づけない。確認までがセット。
| 方法 | 見るポイント |
|---|---|
| Meta Checker | canonical の有無・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検査で確認までやって完了