canonical URLとは?意味と設定方法
rel canonicalとは何か、なぜ検索エンジンに必要か、HTML・HTTPヘッダー・主要CMSでcanonicalタグを設定する方法を解説します。
正規URL(canonical URL)とは
正規URL(rel canonical)は、検索エンジンに「このページの複数のバージョンのうち、これがメインです」と伝えるHTMLタグです。同じコンテンツが複数のアドレスで見られる重複コンテンツという、SEOで最も多い問題の1つを解決します。
canonicalがないと、どのバージョンをメインにするかは検索エンジンが自分で決めます。インデックスに入れたくないほうが選ばれることも少なくありません。このタグがあれば、優先するURLを明示できます。GoogleもYandexも、たいていはこのヒントに従います。
数字で見るcanonical
導入された年
Google、Yahoo、Bingがrel canonicalへの対応を共同で発表。業界横断で初めてのSEO標準です
重複があるサイト
Ahrefsによると、約60%のサイトに、canonicalが必要な重複コンテンツのページがあります
対応する検索エンジン
Google、Yandex、Bingがrel canonicalに対応。指示ではなくヒントなので、検索エンジンが従うのはほとんどの場合で、すべてではありません
リダイレクトではない
canonicalは検索エンジンへのヒントで、ユーザーのリダイレクトではありません。重複ページは元のURLのままアクセスできます
canonicalの意味と基本の考え方
「canonical」という言葉は、数学と論理学からWebに入ってきました。標準形とは、対象をもっとも単純で標準的に表した形のことです。URLの文脈では、正規URLは検索エンジンがランキングとインデックス登録に使う「公式」のリンクで、ほかのバージョンはすべて重複として扱われます。
canonicalと301リダイレクトは、よく混同されます。大きな違いは、リダイレクトが指示で、canonicalがヒントであることです。リダイレクトはユーザーを新しいURLに実際に移動させます。canonicalはユーザーを元のページに残したまま、インデックスではどのURLをメインとして扱うかを検索エンジンに伝えます。
| 比較項目 | rel="canonical" | 301リダイレクト |
|---|---|---|
| シグナルの種類 | ヒント | 指示 |
| ユーザーに表示されるもの | 重複ページのURL | 移動先(メイン)のURL |
| 検索エンジンがインデックスに登録するもの | 正規URLのみ | 移動先のURLのみ |
| リンク評価の引き継ぎ | 一部(100%ではない) | ほぼ全部(約99%) |
| 両方のURLにアクセスできるか | できる | できない(重複URLは301を返す) |
| 使う場面 | 重複、フィルター、ページネーション | ページの恒久的な移転 |
canonicalタグの追加方法
canonicalタグは、重複ページの<head>内に置きます。構文は2009年から変わっていません。空要素の<link>が1つあるだけです。href属性には、完全な絶対URLを書く必要があります。
<head>
<meta charset="UTF-8">
<title>Laptops — buy at TechShop</title>
<link rel="canonical" href="https://example.com/catalog/laptops/">
</head><meta rel="canonical">や<meta name="canonical">と書く例がありますが、そのようなタグはありません。正しい形は、<head>内の<link rel="canonical" href="...">だけです。meta形式は、検索エンジンに完全に無視されます。PDFや画像など、HTMLの<head>がないファイルでは、LinkHTTPヘッダーでcanonicalを送れます。サーバーを自分で管理しているなら、次のnginx設定は、HTML以外のリソースにも通常のページにも使えます。
# nginx.conf — canonical via HTTP header
# For PDF and other non-HTML resources:
location ~* \.pdf$ {
add_header Link '<https://example.com/docs/price-list.pdf>; rel="canonical"';
}
# For dynamic URLs with GET parameters:
location /catalog/ {
add_header Link '<https://example.com/catalog/>; rel="canonical"';
}最も破られやすいcanonicalのルールが5つあります。
- 絶対URLだけを使う。常に完全なアドレスを書きます。
/page/ではなくhttps://example.com/page/です。相対URLのcanonicalも技術的には使えますが、ドメインやプロトコルが変わると正しく動作しなくなります。 - rel canonicalはhttps。 canonicalはページのhttps版を指します。サイトがHTTPSなのにcanonicalが
http://を指していると、検索エンジンが正しく解決できない重複が生まれます。 - 1ページにcanonicalは1つ。 hrefの値が異なる
<link rel="canonical">が複数あると、検索エンジンはすべてを無視するか、どれか1つを任意に選びます。 - canonicalの指す先にアクセスできる。 404や301のURLを指すタグは意味がありません。メインのページは200 OKを返す必要があります。
- 末尾スラッシュを統一する。メインのURLが
/catalog/(スラッシュあり)なら、canonicalにもスラッシュを付けます。表記が混在すると、新たな重複が生まれます。
canonicalを使う場面
canonicalが解決するコンテンツ重複の典型パターンは6つあります。それぞれ、実際のURLの例で見ていきます。
/catalog/?sort=priceや/catalog/?utm_source=emailのようなURLは、/catalog/と同じコンテンツです。これらすべてのページのcanonicalは/catalog/を指します。ECサイトで最も多い重複の原因です。
/blog/page/2/や/blog/page/3/のようなページには固有のコンテンツがあります。そのため、ページネーションのcanonicalは、通常は各ページを自己参照にします。ページネーションの全ページを1ページ目に向けてはいけません。固有のコンテンツがインデックスされなくなります。
フィルター付きのカテゴリページは、/shoes/?color=red&size=42のようなURLを何百も生成することがあります。フィルターページに固有のコンテンツと検索需要があるなら、インデックスに登録します。親カテゴリの重複なら、canonicalを/shoes/に向けます。
ホームページには4つのバージョンがあります。http://example.com、https://example.com、http://www.example.com、https://www.example.comです。メインを1つ選び(できればwwwなしのhttps://example.com)、ほかのすべてからcanonicalと301を設定します。
自分の記事がパートナーサイトに転載されている場合(シンジケーションやミラー)は、元の記事を指すcanonicalを追加してもらいます。Googleはクロスドメインのcanonicalに対応しています。自分のドメインを元の情報源として扱い、リンク評価を引き継ぎます。
自分が関与しないまま、ページが複数のアグリゲーターに掲載されている場合は、元のページに自己参照canonicalを追加します。重複の中からメインのバージョンを選ぶとき、Googleは自己参照canonicalが明示されたURLを優先します。
CMSでのcanonical:WordPress、Bitrix、Tilda
人気のCMSの多くは、canonicalを自動で生成するか、組み込みのツールを備えています。手動で設定が必要なのは、標準的でないケースや、CMSが正しく処理しない場合だけです。
WordPress
Yoast SEOとRank Mathのプラグインは、すべてのページと投稿に自己参照の<link rel="canonical">を自動で追加します。これらのプラグインを使っていない場合は、テーマのfunctions.phpに次のコードを追加します。
<?php
// functions.php — canonical without an SEO plugin
add_action('wp_head', function() {
if (is_singular()) {
echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '">' . "\n";
} elseif (is_home() || is_front_page()) {
echo '<link rel="canonical" href="' . esc_url(home_url('/')) . '">' . "\n";
}
}, 1);Bitrix
1C-Bitrixでは、ページのプロパティでcanonicalを設定します。標準的な方法は、コンポーネントで値を代入し、メインテンプレートのheader.phpで出力することです。
<?php
// In a component or init.php: set the canonical
$canonicalUrl = 'https://' . SITE_SERVER_NAME . $APPLICATION->GetCurPage(false);
$APPLICATION->SetPageProperty('canonical', $canonicalUrl);
// In the template's header.php: output the tag
$canonical = $APPLICATION->GetPageProperty('canonical');
if ($canonical):
?><link rel="canonical" href="<?= htmlspecialchars($canonical, ENT_QUOTES, 'UTF-8') ?>">
<?php endif; ?>Tilda
<head>に自動で挿入します。クロスドメインのcanonicalや独自のケースでは、Zero Blockを使い、<head>にHTMLを挿入します。エラーとGoogle Search Consoleでの確認
canonicalの状態を監視する主なツールは、Google Search Consoleです。インデックス登録 → ページのレポートには、canonicalに関するステータスがいくつか表示されます。
| GSCのステータス | 意味 | 対処 |
|---|---|---|
| 代替ページ(適切なcanonicalタグあり) | Googleがcanonicalを受け入れた状態です。重複ページはインデックスに登録されず、リンク評価はメインのページに渡ります | 問題なし。期待どおりの動作です |
| 重複、Googleが選択したcanonicalがユーザーの選択と異なる | Googleがcanonicalを無視し、別のURLをメインに選びました | 絶対URLか、301がないか、両ページのコンテンツが同一かを確認します |
| 重複、ユーザーによりcanonicalとして選択されていない | canonicalのない類似ページが見つかりました | 重複ページのすべてにcanonicalタグを追加します |
| 登録済み | ページがメインとしてインデックスに登録されました(自己参照canonical、または明示的に選択) | メインのページでは正常です |
GSCに加えて、HTTPレスポンスの段階でもcanonicalを確認します。ツールなしで最も手早いのは、ブラウザーのソース表示(Ctrl+U → canonicalを検索)かcurlです。
# Check canonical in HTTP header:
curl -sI https://example.com/catalog/?sort=price | grep -i link
# Check canonical in HTML (first 2000 bytes of response):
curl -s https://example.com/page/ | head -c 2000 | grep -i canonical- canonicalチェーン。ページA → canonical B → canonical Cのような連鎖です。検索エンジンは直接の指定を好みます。canonicalは、中継なしで最終的なメインURLに向けます。
- リダイレクトを指すcanonical。 301のURLを指すcanonicalは、あいまいなシグナルになります。検索エンジンは連鎖をたどる必要があるので、最終URLを直接指すほうが確実です。
- noindexとcanonicalの併用は矛盾。
noindexとcanonicalの両方があるページは、相反するシグナルを送ります。どちらか一方にします。ページをnoindexにするか、メインのURLへのcanonicalを設定するかです。 - JavaScriptで挿入するcanonical。 GoogleはJSで挿入されたcanonicalタグも処理できますが、遅く、確実性も下がります。HTMLの
<head>に静的な<link>を置くのが基本です。
canonicalを検索します。タグが<head>内になければ、テンプレートに問題があります。canonicalが404や想定外の外部ドメインを指しているなら、重大な設定ミスです。FAQ
SEO監査でよく出てくる、canonicalについての質問に答えます。
まとめ
canonicalタグは、テクニカルSEOの基本的なツールの1つです。実装は簡単ですが、URLを動的に生成するサイトで設定を誤ったり、タグがなかったりすると、深刻なインデックス登録の問題をたびたび引き起こします。絶対URL、rel canonicalはhttps、チェーンなし。この3つの基本ルールで、起こりうるエラーの80%は解消します。
まず現状を確認します。GSC → ページのレポートで、「重複」と「未登録」のステータスで絞り込みます。canonicalが欠けている箇所や、検索エンジンに上書きされている箇所がすぐにわかります。
canonicalと301リダイレクトの違いは何ですか?
canonicalを別ドメインのページに向けられますか?
<link rel="canonical" href="https://your-site.com/article/">を追加してもらいます。Googleはリンク評価とコンテンツの帰属先を、自分のドメインに移します。Googleがcanonicalを無視するのはなぜですか?
クローラーなしでcanonicalを確認するには?
canonicalを検索。(2) Chrome DevTools:Elementsタブで<link relを検索。(3) Google Search Console:ページのレポートでURLをクリックすると、サイドパネルに「Googleが選択したcanonical」と「ユーザーが宣言したcanonical」の両方が表示されます。GSCの「代替ページ(適切なcanonicalタグあり)」のステータスは、どう修正しますか?
Check it with SpiderHead
Free and local: run the audit on your own machine.



