Webサイトを運営していると、同じ内容のページが複数のURLで存在してしまうことがあります。たとえば、HTTPとHTTPS、wwwの有無、パラメータの違いなど、さまざまな理由で重複URLが発生します。こうした状況を放置すると、検索エンジンがどのページを優先すべきか判断できず、SEO上の問題を引き起こす可能性があります。
そこで重要になるのが、Canonicalタグによる正規化です。私たちSEO Note! TeamがSEO実務で培った経験をもとに、Canonicalタグの基本から実践的な活用方法まで、初心者の方にもわかりやすく解説していきます。この記事を読むことで、Canonicalタグの正しい設定方法を理解し、重複コンテンツによるSEO評価の分散を防ぐことができるようになります。
Canonicalとは何か
Canonicalとは、複数の類似したURLが存在する場合に、検索エンジンに対して「このURLが正規版です」と伝えるための仕組みです。英語の「canonical」は「正典の」「標準的な」という意味を持ち、Webの世界では「正規の」「本来の」という意味で使われています。
検索エンジンは日々膨大な数のWebページをクロールしていますが、同じコンテンツが複数のURLで公開されていると、どのURLをインデックスすべきか迷ってしまいます。Canonicalタグを使用することで、この問題を解決し、検索エンジンに正しいURLを認識させることができます。
具体的には、HTMLのhead要素内にrel=”canonical”属性を持つlinkタグを記述することで、そのページの正規URLを宣言します。この仕組みは2009年にGoogle、Yahoo、Microsoftの3社が共同で導入したもので、現在ではSEOの基本的な施策として広く認知されています。
HTTP Archive Web Almanacの調査によると、Canonicalタグの使用率は年々増加しており、2025年時点でデスクトップページの68%、モバイルページの67%がCanonicalタグを実装しています。2024年の65%から着実に普及が進んでいることがわかります。

Canonicalの語源と読み方
Canonicalは「カノニカル」と読みます。もともとは宗教用語で「聖典に則った」「正典の」という意味があり、これが転じてIT分野では「標準的な」「正規の」という意味で使われるようになりました。キリスト教における「正典(Canon)」から派生した言葉であり、聖書として認められた文書を指す用語でした。
この概念がコンピュータサイエンスに取り入れられ、「正式な」「標準的な」という意味で使われるようになったのです。SEOの文脈では、複数存在するURLの中から「これが正式なURLである」と宣言するための概念として定着しています。
日本のWeb業界では「正規化」「URL正規化」という言葉で説明されることも多く、Canonicalタグを設定することを「カノニカルを設定する」「正規化する」などと表現します。また、「canonical form(正規形)」という言葉はデータベースの正規化理論でも使われており、IT分野では幅広く使用される概念となっています。
Canonicalタグが必要になった背景
インターネットが発展するにつれ、同一コンテンツが複数のURLでアクセス可能になるケースが増加しました。たとえば、セッションIDやトラッキングパラメータがURLに付与されることで、実質的に同じページが無数のURLを持つようになりました。また、CMSの普及により、カテゴリページやタグページなど、同じ記事が複数の場所に表示されるようになったことも要因の一つです。
これらの重複URLが検索エンジンのインデックスに登録されると、クロール効率の低下やリンク評価の分散といった問題が発生します。この課題を解決するために、Canonicalタグという仕組みが生まれました。Webサイト運営者が明示的に正規URLを指定できるようになったことで、検索エンジンとの間でURLの取り扱いについて明確なコミュニケーションが取れるようになったのです。
Canonical URLの基本的な仕組み
Canonical URLとは、複数の類似ページの中で検索エンジンにインデックスしてほしい代表的なURLのことを指します。たとえば、あるページに「https://example.com/page」「https://example.com/page?ref=twitter」「https://example.com/page?utm_source=newsletter」という3つのURLでアクセスできる場合、これらはすべて同じコンテンツを表示します。
このとき、Canonical URLとして「https://example.com/page」を指定することで、検索エンジンはパラメータ付きのURLを重複とみなし、正規URLに評価を集約します。この仕組みにより、外部サイトからのリンクがさまざまなURLバリエーションに分散していても、すべての評価を一つのURLに統合することができます。
検索エンジンがCanonicalを処理する流れ
検索エンジンがCanonicalタグを処理する際には、いくつかの段階を経ます。
- クローラーがページをクロールした際にHTML内のCanonicalタグを発見する
- 指定されたCanonical URLが実際に存在し、アクセス可能かどうかを確認する
- 指定されたURLのコンテンツと現在のページのコンテンツが十分に類似しているかを判断する
- 条件を満たした場合、検索エンジンはCanonical URLを正規版として認識する
これらの条件を満たした場合、検索結果にはそのURLが表示されるようになります。ただし、Canonicalタグはあくまで「ヒント」であり、検索エンジンが必ずしもその指示に従うとは限りません。
Googleの公式見解によると、Canonicalタグは「強いシグナル」として扱われますが、最終的な判断は検索エンジンが行います。たとえば、指定されたCanonical URLのコンテンツが現在のページと大きく異なる場合、検索エンジンはそのCanonical指定を無視することがあります。
Canonicalタグとインデックスの関係
Canonicalタグを設定しても、元のページがインデックスから完全に削除されるわけではありません。検索エンジンは元のページの存在を認識していますが、検索結果にはCanonical URLを優先的に表示します。これは、元のページへのリンクやアクセスが完全に無効になるわけではないことを意味します。
ユーザーがパラメータ付きURLに直接アクセスした場合、そのページは正常に表示されます。ただし、検索結果から流入するトラフィックは、基本的にCanonical URLに集約されることになります。この仕組みを理解しておくことで、Canonicalタグの効果と限界を正しく把握できます。
Canonicalタグの正しい書き方
Canonicalタグを正しく機能させるためには、適切な形式で記述する必要があります。基本的な書き方を理解しておくことで、設定ミスを防ぎ、意図した通りの正規化を実現できます。Canonicalの指定方法には、HTMLのlinkタグを使う方法とHTTPヘッダーを使う方法の2種類があります。それぞれの方法に適した使用場面があるため、状況に応じて使い分けることが重要です。
| 指定方法 | 記述場所 | 主な用途 | 使用率 |
|---|---|---|---|
| HTMLのlinkタグ | head要素内 | 通常のWebページ | 約67-68% |
| HTTPヘッダー | レスポンスヘッダー | PDF・画像など非HTML | 約0.5-0.6% |
HTMLでの記述方法
HTMLでCanonicalタグを記述する場合は、head要素内にlink要素を配置します。記述形式は「link rel="canonical" href="正規URL"」となります。たとえば、正規URLが「https://example.com/article/seo-guide」の場合、このURLをhref属性に指定します。
注意点として、href属性には必ず絶対URLを記述してください。相対URLで記述すると、検索エンジンが正しくURLを解釈できない可能性があります。たとえば「/article/seo-guide」のような相対パスではなく、プロトコルとドメインを含む完全なURLを指定します。
また、Canonicalタグはhead要素内のできるだけ上部に配置することが推奨されています。これは、検索エンジンのクローラーがページを上から順に読み込むため、早い段階でCanonical情報を伝えることができるからです。特に、ページサイズが大きい場合やhead要素内に多くのスクリプトがある場合は、Canonicalタグを先に配置することでクロール効率が向上します。
<head>
<meta charset="UTF-8">
<!-- Canonicalタグは head 内のできるだけ上部に配置 -->
<link rel="canonical" href="https://example.com/article/seo-guide">
<title>ページタイトル | サイト名</title>
<meta name="description" content="ページの説明文">
</head>

HTTPヘッダーでの指定方法
HTMLファイル以外のコンテンツ、たとえばPDFファイルや画像ファイルに対してCanonicalを指定したい場合は、HTTPヘッダーを使用します。HTTPレスポンスヘッダーに「Link」フィールドを追加し、rel="canonical"とともに正規URLを指定します。具体的な記述形式は「Link: <正規URL>; rel="canonical"」となります。
この方法は、HTMLを編集できないコンテンツや、動的に生成されるファイルに対して有効です。Webサーバーの設定ファイルや、アプリケーション側でヘッダーを出力することで実装できます。
ApacheやNginxなどのWebサーバーでは、設定ファイルに記述を追加することでHTTPヘッダーによるCanonical指定が可能です。Apacheの場合は.htaccessファイルやhttpd.confにHeader setディレクティブを追加し、Nginxの場合はadd_headerディレクティブを使用します。また、PHPなどのサーバーサイドスクリプトでheader関数を使って動的にCanonicalヘッダーを出力することもできます。
# Apache (.htaccess) でのCanonicalヘッダー設定例
<FilesMatch "\.pdf$">
Header set Link "<https://example.com/document.pdf>; rel=\"canonical\""
</FilesMatch>
# Nginx での設定例
location ~* \.pdf$ {
add_header Link '<https://example.com/document.pdf>; rel="canonical"';
}
Canonicalタグを設置すべき場所
Canonicalタグは、HTMLドキュメントのhead要素内に配置する必要があります。body要素内に配置しても、検索エンジンは認識しない可能性が高いため、必ずhead内に記述してください。
また、JavaScriptで動的にCanonicalタグを生成する方法は推奨されません。検索エンジンのクローラーがJavaScriptを実行してからCanonicalを認識するまでに時間がかかり、正しく処理されない場合があるからです。Googleはレンダリング後のHTMLも解析しますが、初期HTMLに含まれるCanonicalタグの方が確実に認識されます。
CMSを使用している場合は、テンプレートファイルのhead部分にCanonicalタグを出力するコードを追加するか、SEOプラグインを利用して設定することが一般的です。WordPressであればYoast SEOやAll in One SEO Packなどのプラグインが、自動的にCanonicalタグを出力する機能を備えています。テンプレートエンジンを使用している場合は、各ページタイプに応じて適切なCanonical URLを動的に生成するロジックを実装することが重要です。
重複コンテンツとCanonicalの関係
重複コンテンツとは、同一または非常に類似したコンテンツが複数のURLで存在している状態を指します。検索エンジンは重複コンテンツを嫌う傾向があり、適切に処理しないとSEO上の問題が発生する可能性があります。
重複コンテンツは意図的に作成される場合もあれば、技術的な理由で意図せず発生する場合もあります。Googleの元エンジニアであるMatt Cutts氏は、Web上の全コンテンツの約25-30%程度が重複コンテンツであると述べています。Canonicalタグは、この重複コンテンツ問題に対処するための主要な手段の一つです。
なぜ重複コンテンツが問題になるのか
重複コンテンツが存在すると、検索エンジンはいくつかの問題に直面します。
- クロールの効率が低下し、サイト全体のクロール予算を無駄に消費してしまう
- 外部サイトからのリンク評価が複数のURLに分散し、各URLの個別評価が弱くなる
- 検索エンジンがどのURLをインデックスすべきか判断に迷い、意図しないURLが検索結果に表示される
- パラメータ付きのURLや印刷用ページなど、ユーザーに見せたくないURLが検索結果に表示される可能性がある
Canonicalタグを正しく設定することで、これらの問題を回避し、SEO効果を最大化できます。
重複コンテンツが発生する典型的なパターン
重複コンテンツは、さまざまな原因で発生します。最も一般的なのは、URLのバリエーションによる重複です。
| パターン | 例 | 対策 |
|---|---|---|
| プロトコルの違い | http:// と https:// | HTTPSに統一し301リダイレクト |
| wwwの有無 | www.example.com と example.com | どちらかに統一しCanonical設定 |
| 末尾スラッシュ | /page と /page/ | 一方に統一しCanonical設定 |
| パラメータ付きURL | /page?sort=date | パラメータなしURLにCanonical |
| セッションID | /page?sid=xxx | ベースURLにCanonical |
CMSの機能による重複も頻繁に発生します。たとえば、同じ記事がカテゴリページ、タグページ、アーカイブページなど複数の場所に表示される場合です。
さらに、モバイル版とデスクトップ版で別々のURLを使用している場合や、地域ごとに異なるURLで同じコンテンツを提供している場合も重複コンテンツとなります。これらのケースに対して、適切にCanonicalタグを設定することが重要です。
自己参照Canonicalの重要性
自己参照Canonicalとは、ページが自分自身のURLをCanonical URLとして指定することを意味します。一見すると不要に思えるかもしれませんが、実は非常に重要な施策です。
自己参照Canonicalを設定する主な理由は、予期せぬ重複URLの発生に備えることにあります。Webサイトは運用していく中で、パラメータの追加やURLの変更など、さまざまな変化が起こります。その際に、意図せず重複URLが発生する可能性があります。自己参照Canonicalを事前に設定しておくことで、このような事態に自動的に対応できます。
また、外部サイトがあなたのページにリンクする際に、誤ってパラメータ付きのURLでリンクすることがあります。自己参照Canonicalがあれば、そのような場合でも正規URLに評価を集約できます。
Googleも公式に自己参照Canonicalの設定を推奨しており、SEOのベストプラクティスとして広く認知されています。サイト全体で一貫して自己参照Canonicalを設定することで、URLの正規化に関する問題を未然に防ぐことができます。
<!-- 自己参照Canonicalの設定例 -->
<!-- このページのURL: https://example.com/blog/article-title -->
<head>
<link rel="canonical" href="https://example.com/blog/article-title">
</head>
<!-- パラメータ付きでアクセスされた場合も同じCanonicalを維持 -->
<!-- https://example.com/blog/article-title?ref=twitter でアクセスしても -->
<!-- Canonical は https://example.com/blog/article-title を指す -->


Canonicalタグが必要なケース
Canonicalタグが特に必要とされる状況は複数存在します。これらのケースを理解しておくことで、自社サイトに適切なCanonical設定を行うことができます。代表的なケースとして、ECサイトでの商品バリエーションページ、パラメータ付きURLの存在、コンテンツシンジケーションなどが挙げられます。それぞれの状況に応じた適切な対応を行うことが重要です。
ECサイトでの商品バリエーションページ
ECサイトでは、同じ商品でも色やサイズの違いで異なるURLが生成されることがよくあります。たとえば、Tシャツという商品に対して、白色バージョン、黒色バージョン、Sサイズ、Mサイズなど、バリエーションごとにURLが存在するケースです。
「example.com/tshirt?color=white」「example.com/tshirt?color=black」「example.com/tshirt?size=S」などのURLが生成され、これらのページは商品説明や価格などの主要なコンテンツが同一であるため、重複コンテンツとみなされる可能性があります。
このような場合、代表的なバリエーションのURLをCanonical URLとして指定することで、評価の分散を防ぐことができます。一般的には、最も人気のあるバリエーションや、デフォルトで表示されるバリエーションのURLをCanonical URLとして設定します。
パラメータ付きURLが生成される場合
アクセス解析用のトラッキングパラメータ、セッションID、ソート順や表示件数の指定など、さまざまな理由でURLにパラメータが付与されることがあります。UTMパラメータはマーケティング施策の効果測定に不可欠ですが、これらのパラメータが付いたURLは、パラメータなしのURLと同じコンテンツを表示することが多いため、重複として扱われます。
たとえば、「example.com/products?sort=price」と「example.com/products?sort=date」は、表示順が異なるだけで同じ商品一覧を表示します。また、「example.com/article?utm_source=twitter&utm_medium=social」のようなトラッキングパラメータ付きURLも、パラメータなしのURLと同じコンテンツを表示します。
このような場合、パラメータなしのベースURLをCanonical URLとして指定することが一般的です。こうすることで、どのパラメータ付きURLからアクセスしても、SEO評価はベースURLに集約されます。
Canonicalタグが不要なケース
Canonicalタグはすべてのページに必須というわけではありません。コンテンツが完全にユニークで、重複の心配がないページでは、Canonicalタグがなくても問題ありません。ただし、前述の通り自己参照Canonicalを設定しておくことで、将来的な重複リスクに備えることができるため、設定しておくことを推奨します。
また、すでに301リダイレクトで正規化を行っているURLに対しては、Canonicalタグは不要です。301リダイレクトはCanonicalタグよりも強い正規化シグナルを送るため、併用する必要はありません。301リダイレクトが設定されている場合、そもそも元のURLにアクセスしてもリダイレクト先に転送されるため、Canonicalタグを読み込む機会がありません。
noindexを設定しているページについても、Canonicalタグとの併用は避けるべきです。noindexは「このページをインデックスしないでほしい」という指示であり、Canonicalは「別のURLを正規版として扱ってほしい」という指示です。両方を同時に指定すると、検索エンジンが混乱する可能性があります。
ページネーションでのCanonical活用
ブログの記事一覧やECサイトの商品一覧など、コンテンツが複数ページにわたって分割されている場合、ページネーションの設定が必要になります。以前はrel=”prev”とrel=”next”を使ってページ間の関係を示すことが推奨されていましたが、2019年にGoogleはこれらのタグをランキング要素として使用していないことを明らかにしました。
これはSEO業界に大きな衝撃を与えましたが、Googleは実際にはこれらのタグを長年使用していなかったと説明しています。現在のページネーション対策として、Canonicalタグを活用する方法があります。ただし、ページネーションの各ページには固有のコンテンツが含まれているため、単純にすべてのページから1ページ目へCanonicalを向けることは推奨されません。
連続したページの正規化戦略
ページネーションにおけるCanonicalの設定方法には、いくつかの選択肢があります。
- 各ページに自己参照Canonicalを設定する方法(最も一般的で推奨)
- すべてのページから「全件表示ページ」へCanonicalを向ける方法
- 1ページ目のみを正規URLとして指定する方法
一つ目の方法では、1ページ目は1ページ目自身を、2ページ目は2ページ目自身をCanonical URLとして指定します。この方法では、各ページが独立したコンテンツとして扱われ、それぞれのページが検索結果に表示される可能性があります。
二つ目は、たとえば100件の商品を10件ずつ表示するページネーションがある場合、100件すべてを1ページに表示する「View All」ページを作成し、そこへCanonicalを向けます。ただし、この方法は全件表示ページがユーザーにとって使いやすく、かつページの読み込み速度に問題がない場合にのみ推奨されます。
最後の方法は、2ページ目以降のコンテンツが検索結果に表示されなくても問題ない場合に有効ですが、2ページ目以降に含まれる個別コンテンツへのSEO評価を放棄することになるため、慎重に検討する必要があります。
<!-- ページネーションでの自己参照Canonical設定例 -->
<!-- 1ページ目: https://example.com/blog/ -->
<link rel="canonical" href="https://example.com/blog/">
<!-- 2ページ目: https://example.com/blog/page/2/ -->
<link rel="canonical" href="https://example.com/blog/page/2/">
<!-- 3ページ目: https://example.com/blog/page/3/ -->
<link rel="canonical" href="https://example.com/blog/page/3/">
<!-- 各ページが自分自身を正規URLとして宣言する -->
| 戦略 | メリット | デメリット | 推奨ケース |
|---|---|---|---|
| 各ページに自己参照 | 各ページが独立して評価される | 設定が必要なページ数が多い | 一般的なサイト |
| 全件表示ページへ | 評価が1ページに集約 | ページが重くなる可能性 | 件数が少ない場合 |
| 1ページ目のみ | シンプルな設定 | 2ページ目以降が評価されない | 1ページ目が最重要の場合 |
GETパラメータによる重複ページへの対処
Webアプリケーションでは、GETメソッドによってURLにパラメータが付与されることがあります。検索機能やフィルタリング機能を実装すると、ユーザーの操作に応じてさまざまなパラメータ付きURLが生成されます。
たとえば、ECサイトの検索機能では「example.com/search?q=スニーカー&color=白&size=26」のような複雑なURLが生成されることがあります。これらのURLが検索エンジンにインデックスされると、大量の重複コンテンツや低品質ページが発生する可能性があります。特に、フィルタリング条件の組み合わせが多い場合、インデックス対象のURLが爆発的に増加する恐れがあります。
意図しないパラメータURLの処理方法
GETパラメータによる重複ページに対処する方法はいくつかあります。
- Canonicalタグを使ってパラメータなしのベースURLを正規版として指定する
- 意図しないGETパラメータへのアクセスに対して404エラーを返す
- ベースURLへ301リダイレクトする
- robots.txtでパラメータ付きURLのクロールをブロックする
より根本的な対策として、意図しないGETパラメータへのアクセスに対して404エラーを返す、またはベースURLへリダイレクトする方法があります。この方法は、不要なパラメータ付きURLがそもそも存在しないようにするため、クロール効率の面でも優れています。
たとえば、許可されたパラメータのリストを定義し、それ以外のパラメータが付与された場合は404を返すか、正規URLへ301リダイレクトするという実装が考えられます。この方法は開発工数がかかりますが、長期的にはサイトのクオリティを維持するために有効です。
なお、かつてはGoogle Search Consoleに「URLパラメータ」ツールがありましたが、2022年4月に廃止されました。現在のGoogleはパラメータの処理を自動的に学習するため、特別な設定は不要とされています。


クロスドメインでのCanonical設定
Canonicalタグは同一ドメイン内だけでなく、異なるドメイン間でも使用することができます。これをクロスドメインCanonicalと呼びます。たとえば、企業が複数のWebサイトを運営しており、同じコンテンツを複数のサイトに掲載している場合に活用できます。この機能を活用することで、コンテンツの重複によるSEO評価の分散を防ぎつつ、複数のサイトでコンテンツを公開し続けることができます。


異なるドメイン間でコンテンツを正規化する方法
クロスドメインCanonicalの典型的な使用例として、コンテンツシンジケーション(配信)があります。オリジナルの記事をサイトAで公開し、同じ記事をサイトBにも掲載する場合、サイトBの記事ページからサイトAの記事URLへCanonicalを向けます。
すると、検索エンジンはサイトAの記事をオリジナルとして認識し、サイトBの記事は複製として扱われます。サイトBの記事は検索結果には表示されにくくなりますが、サイトAの記事の評価が高まることで、全体としてのSEO効果は維持されます。
また、プロフィールページのようなコンテンツを複数のドメインで共有する場合にも有効です。たとえば、ドメインAの「/profile/」ページとドメインBの「/profile/」ページが同じ内容である場合、どちらかをCanonical URLとして指定することで、評価の分散を防げます。企業のコーポレートサイトとサービスサイトで同じ会社概要を掲載している場合などが該当します。
クロスドメインCanonicalを使用する際は、指定先のドメインが自社で管理しているものであることを確認してください。悪意のある第三者のサイトへCanonicalを向けてしまうと、自サイトのコンテンツが検索結果から消えてしまう可能性があります。また、指定先のドメインがアクセス可能で、コンテンツが実際に類似していることも重要です。
<!-- クロスドメインCanonicalの設定例 -->
<!-- サイトB(https://service-b.com/profile/)のhead内に記述 -->
<head>
<!-- サイトAのプロフィールページを正規URLとして指定 -->
<link rel="canonical" href="https://corporate-a.com/profile/">
</head>
<!-- これにより、サイトBのプロフィールページの評価が -->
<!-- サイトAのプロフィールページに集約される -->
Canonicalタグとnoindexの違い
CanonicalタグとnoindexはどちらもSEOでよく使用される指示ですが、その目的と効果は大きく異なります。Canonicalタグは「このページではなく、別のURLを正規版として扱ってほしい」という指示です。一方、noindexは「このページを検索結果に表示しないでほしい」という指示です。この違いを正しく理解することで、適切な施策を選択できます。
Canonicalタグを使用した場合、指定されたCanonical URLが検索結果に表示されます。元のページは検索結果には表示されませんが、リンクの評価などはCanonical URLに引き継がれます。これは、重複コンテンツの評価を一つのURLに集約するという意味で、非常に有用な仕組みです。
noindexを使用した場合、そのページは検索結果から完全に除外されます。ページへのリンク評価がどのように扱われるかは状況によって異なりますが、基本的にはそのページのSEO評価は他のページに引き継がれません。
| 項目 | Canonicalタグ | noindex |
|---|---|---|
| 目的 | 正規URLを指定 | インデックス除外 |
| 検索結果 | 正規URLが表示される | 表示されない |
| リンク評価 | 正規URLに引き継がれる | 引き継がれない |
| 使用場面 | 重複コンテンツの正規化 | 低品質ページの除外 |
| 併用 | noindexとの併用は非推奨 | Canonicalとの併用は非推奨 |
状況に応じた使い分けの判断基準
Canonicalとnoindexのどちらを使用すべきかは、状況によって判断が異なります。コンテンツが重複しており、正規版となるページが存在する場合はCanonicalタグを使用します。これにより、重複ページの評価を正規ページに集約できます。たとえば、パラメータ付きURLやモバイル版URLなど、同じコンテンツを異なるURLで表示している場合が該当します。
コンテンツが薄い、または検索結果に表示する価値がないと判断されるページにはnoindexを使用します。たとえば、サンクスページや検索結果ページ、ログインページなどが該当します。これらのページは固有のコンテンツを持っていますが、検索ユーザーにとって有用ではないため、インデックスする必要がありません。
重要なのは、Canonicalとnoindexを同じページに併用しないことです。Googleは、両方が指定されている場合、通常はnoindexを優先しますが、予期しない動作を引き起こす可能性があるため、どちらか一方のみを使用してください。設定の意図を明確にするためにも、一つのページには一つの指示のみを設定することが望ましいです。
Canonicalタグと301リダイレクトの使い分け
URL正規化の手段として、Canonicalタグと301リダイレクトはよく比較されます。どちらも「このURLではなく、別のURLを使ってほしい」という意図を検索エンジンに伝えるものですが、その性質は大きく異なります。
301リダイレクトは、アクセスしてきたユーザーを自動的に別のURLへ転送します。ユーザーは元のURLにアクセスしても、すぐに転送先のURLに移動することになります。検索エンジンに対しても「恒久的にURLが移転した」という強いシグナルを送ります。この場合、検索エンジンは元のURLをインデックスから削除し、転送先のURLをインデックスします。
Canonicalタグは、ユーザーには影響を与えず、検索エンジンに対してのみ正規URLを示唆します。ユーザーは元のURLにアクセスすると、そのままそのページを閲覧できます。あくまで「ヒント」であり、検索エンジンが必ずしも従うとは限りませんが、通常は尊重されます。
使い分けの基準として、ユーザーもリダイレクトさせたい場合は301リダイレクトを使用し、ユーザーにはそのままページを見せたいが検索エンジンには別URLを正規版として認識してほしい場合はCanonicalタグを使用します。たとえば、ドメイン移転の場合は301リダイレクトが適切であり、トラッキングパラメータ付きURLの正規化にはCanonicalタグが適切です。また、印刷用ページやAMP版ページなど、ユーザーには見せたいが検索結果には通常版を表示したい場合もCanonicalタグが適しています。
WordPressでのCanonical設定方法
WordPressは世界で最も利用されているCMSであり、多くのWebサイトがWordPressで構築されています。WordPressでCanonicalタグを設定する方法はいくつかあり、サイトの規模や技術力に応じて選択できます。WordPressは標準機能としてもrel=”canonical”を出力しますが、より細かな制御を行いたい場合はプラグインやカスタムコードを使用します。
プラグインを使った設定
最も手軽なのはSEOプラグインを活用する方法で、Canonical機能に特化したKashiwazaki SEO Canonicalがおすすめです。投稿・固定ページごとのカスタムCanonical URL設定に加え、HTTPからHTTPSへの自動正規化やwww統一設定など、実務で必要な機能がシンプルにまとまっています。
全ページのCanonical URL設定を一覧表示・管理できる一括管理画面も備えており、他のプラグインが出力する重複Canonicalタグを自動削除して競合を防ぐ機能もあります。
また、Yoast SEO、All in One SEO Pack、Rank Mathなどの多機能SEOプラグインでもCanonicalタグの設定が可能です。これらのプラグインをインストールして有効化するだけで、各ページに自己参照Canonicalが自動的に設定されます。個別のページや投稿でCanonical URLをカスタマイズすることも可能で、各投稿の編集画面にあるSEO設定セクションで特定のページのCanonical URLを手動で指定できます。


テーマファイルを編集する方法
プラグインを使用せずにCanonicalタグを設定したい場合は、テーマのheader.phpファイルを編集します。wp_head関数の前後に、Canonicalタグを出力するPHPコードを追加します。この方法では、WordPressの関数を使って現在のページのURLを取得し、linkタグとして出力します。
たとえば、get_permalink関数を使って投稿のパーマリンクを取得したり、home_url関数を使ってトップページのURLを取得したりします。ただし、テーマのアップデート時にカスタマイズが上書きされる可能性があるため、子テーマを使用するか、カスタム関数をfunctions.phpに追加することをお勧めします。
子テーマを使用すれば、親テーマがアップデートされても子テーマのカスタマイズは維持されます。また、wp_headアクションフックを使って関数からCanonicalタグを出力する方法もあり、この場合はテーマファイルを直接編集する必要がありません。WordPressはデフォルトでもrel="canonical"を出力する機能を持っていますが、すべてのケースをカバーしているわけではないため、プラグインまたはカスタムコードで補完することが望ましいです。
<?php
// functions.php に追加するカスタムCanonical出力コード
function custom_canonical_tag() {
// WordPressデフォルトのcanonicalを削除
remove_action('wp_head', 'rel_canonical');
// カスタムcanonicalを出力
if (is_singular()) {
$canonical_url = get_permalink();
} elseif (is_home() || is_front_page()) {
$canonical_url = home_url('/');
} elseif (is_category()) {
$canonical_url = get_category_link(get_queried_object_id());
}
if (!empty($canonical_url)) {
echo '<link rel="canonical" href="' . esc_url($canonical_url) . '">' . "\n";
}
}
add_action('wp_head', 'custom_canonical_tag');
?>
Canonicalタグの確認方法
Canonicalタグが正しく設定されているかどうかを確認することは、SEO施策の効果を検証する上で重要です。設定したつもりでも実際には出力されていなかったり、誤ったURLが指定されていたりするケースは少なくありません。定期的にCanonical設定を確認し、問題があれば早期に修正することが大切です。
ブラウザでの確認手順
最も手軽な確認方法は、ブラウザの開発者ツールを使用することです。対象のページを開き、右クリックから「ページのソースを表示」を選択するか、開発者ツールの「Elements」タブでhead要素内を確認します。「rel=”canonical”」を検索すれば、Canonicalタグが設定されているかどうか、また設定されているURLが正しいかどうかを確認できます。
ChromeやFirefox、Edgeなどの主要なブラウザには開発者ツールが標準搭載されており、F12キーまたはCtrl+Shift+Iで起動できます。複数のCanonicalタグが存在する場合は問題があるため、一つだけ出力されていることを確認してください。複数のCanonicalタグが存在すると、検索エンジンがどちらを優先すべきか判断できなくなります。
また、指定されているURLが絶対URLであり、意図した正規URLと一致しているかも確認します。プロトコル(httpかhttps)やwwwの有無も含めて、正確に確認することが重要です。


Search Consoleでの確認方法
Google Search Consoleの「URL検査」機能を使うと、Googleがどのように、Canonicalを認識しているかを確認できます。対象のURLを検査すると、「ユーザーが指定した正規URL」と「Googleが選択した正規URL」が表示されます。
「ユーザーが指定した正規URL」は、あなたがCanonicalタグで指定したURLです。「Googleが選択した正規URL」は、Googleが実際に正規版として認識しているURLです。これらが一致していれば、Canonicalタグが意図通りに機能しています。
もし一致していない場合は、Googleがあなたの指定を無視して別のURLを正規版として選択している可能性があります。この場合、Canonicalタグの設定内容や、ページ間のコンテンツの類似性を見直す必要があります。また、インデックスカバレッジレポートでは、「重複しています。ユーザーにより、正規ページとして選択されていません」などのステータスが表示されることがあり、Canonical設定の問題を発見する手がかりになります。


Canonicalタグが機能しない原因と対処
Canonicalタグを設定しても、検索エンジンがそれを無視するケースがあります。これは、Canonicalタグがあくまで「ヒント」であり、検索エンジンが最終的な判断を下すからです。検索エンジンは、サイト所有者の意図を尊重しつつも、ユーザーにとって最適な検索結果を提供することを優先します。Canonicalが機能しない主な原因と、その対処法を理解しておくことが重要です。
よくあるエラーパターン
Canonicalタグが機能しない原因として、以下のパターンが挙げられます。
- 相対URLでの記述(必ず絶対URLで指定する)
- Canonical先のページが404エラーやリダイレクトを返している
- Canonicalタグがhead要素外に配置されている
- JavaScriptで動的に生成されている
- 複数のCanonicalタグが存在する
相対URLで記述すると、検索エンジンが正しくURLを解釈できない場合があります。Canonicalタグには必ず絶対URL(https://から始まる完全なURL)を指定してください。また、指定するURLは、正常にアクセスできるページである必要があります。404エラーを返すURLや、他のURLにリダイレクトされるURLをCanonicalとして指定しても、検索エンジンはそれを正規URLとして認識できません。
HTMLの構造を確認し、必ずhead内、できれば上部に配置してください。複数のCanonicalタグが存在する場合も、どちらを優先すべきか検索エンジンが判断できなくなります。CMSのプラグインやテーマが自動的にCanonicalタグを出力し、手動で設定したCanonicalタグと重複してしまうケースがあります。ページ内にCanonicalタグは一つだけにしてください。
Canonicalタグ設定でよくある間違い
実務でCanonicalタグを設定する際、いくつかの典型的な間違いがよく見られます。これらを事前に理解しておくことで、設定ミスを防ぐことができます。
最もよくある間違いは、すべてのページからトップページへCanonicalを向けてしまうことです。これは、サイト内のすべてのページがトップページの複製であると宣言することになり、各ページが検索結果に表示されなくなってしまいます。Canonicalタグは、本当に重複している場合にのみ使用してください。それぞれのページが固有のコンテンツを持っている場合は、自己参照Canonicalを設定するのが正しい方法です。
次に多いのは、HTTPとHTTPSの混在です。サイトがHTTPSで運用されているにもかかわらず、CanonicalタグにHTTPのURLを指定してしまうケースがあります。常にサイトで使用しているプロトコルと一致させてください。HTTPSへの移行後にCanonicalタグの更新を忘れていたり、CMSの設定が古いままになっていたりすることが原因です。
また、wwwの有無の不一致も問題になります。サイトがwwwなしで運用されているなら、CanonicalタグにもwwwなしのURLを指定します。wwwあり版とwwwなし版の両方にアクセスできる状態で、Canonical設定が不統一だと、評価が分散してしまいます。細かな点ですが、末尾のスラッシュの有無も一貫性を保つことが重要です。「example.com/page」と「example.com/page/」を混在させないようにしてください。


Googleが推奨するベストプラクティス
Googleは公式ドキュメントでCanonicalタグに関するベストプラクティスを公開しています。これらの推奨事項に従うことで、Canonicalタグを最大限に活用できます。まず、各ページに自己参照Canonicalを設定することが推奨されています。こうしておけば、予期せぬ重複URLの発生に備えることができます。
Googleは重複URLの統合について、Canonicalタグの使用方法、自己参照Canonicalの推奨、クロスドメインでの設定方法など、詳細なガイドラインを公開しています。正規化の仕組みを正しく理解するために参照することをお勧めします。
たとえパラメータが付与される可能性がなくても、自己参照Canonicalを設定しておくことで、外部からの不正なリンクや、CMSの設定変更による意図しない重複に対応できます。
次に、Canonical URLには絶対URLを使用し、できればHTTPSを使用することが推奨されています。サイトがHTTPSに対応しているなら、CanonicalタグにもHTTPS URLを指定してください。HTTPとHTTPSの両方でアクセスできる状態は避け、HTTPからHTTPSへの301リダイレクトを設定した上で、CanonicalタグにはHTTPS URLを指定します。
また、Canonicalタグとhreflangタグを併用する場合は、hreflangでグループ化されたすべてのページで一貫したCanonical設定を行う必要があります。多言語サイトでは、各言語版のページが自己参照Canonicalを持ち、hreflangで他の言語版を参照するという構成が一般的です。言語間でCanonicalを向け合うことは避けてください。
さらに、サイトマップに記載するURLとCanonical URLを一致させることも重要です。サイトマップには正規URLのみを含め、Canonicalタグと整合性を持たせてください。パラメータ付きURLやリダイレクト元のURLをサイトマップに含めないようにしましょう。
まとめ
Canonicalタグは、重複コンテンツの問題を解決し、SEO効果を最大化するための重要な技術です。正しく理解して活用することで、検索エンジンに対して適切なシグナルを送り、サイトの評価を正しく集約できます。
この記事で解説した内容を振り返ると、Canonicalタグは複数の類似URLが存在する場合に正規版を示す仕組みであり、HTMLのlinkタグまたはHTTPヘッダーで指定できます。基本的な使い方として、まずすべてのページに自己参照Canonicalを設定することをお勧めします。これにより、将来的な重複リスクに備えることができます。
重複コンテンツが存在する場合は、正規版となるページへCanonicalを向けることで、評価の分散を防ぎます。ページネーション、GETパラメータ、クロスドメインなど、さまざまな状況でCanonicalタグを活用できます。それぞれの状況に応じた適切な設定方法を選択してください。
特に、ページネーションでは各ページに自己参照Canonicalを設定する方法が一般的であり、GETパラメータによる重複には、Canonicalタグだけでなく404エラーやリダイレクトによる根本的な対策も検討する価値があります。クロスドメインCanonicalを使用する場合は、自社管理下のドメインに対してのみ設定するよう注意してください。
設定後は、ブラウザの開発者ツールやGoogle Search Consoleを使って、正しく機能しているかを確認することも忘れずに行いましょう。Search Consoleの「URL検査」機能では、Googleが実際にどのURLを正規版として認識しているかを確認できます。
Canonicalタグは一度設定すれば終わりではなく、サイトの変更や拡張に応じて継続的に見直すことが大切です。定期的にCanonical設定を確認し、常に最適な状態を維持することで、長期的なSEO効果を得ることができます。







