wwwあり、なし等のURLの正規化方法 canonical属性の使い方

URLの正規化とは

URLの正規化とは、重複する、または類似のコンテンツで分散している検索エンジンの被リンク評価を、正規のURLに統合してもらう事を意味します。
Googleは特に何もしなくても重複するURLを一つのURLに集約しようとします。

例えば「url.htm?utm=greencheeseandham」と「url.htm」の二つのURLで共通するコンテンツが表示されていた場合には、短い方のURL 「url.htm」 で正規化されます。

ただし、必ずしもウェブサイト運営者の思う通りに評価が統合されるとは限りません。
評価やインデックスをコントロールする為には、canonical属性で正規URLを指定しておきましょう。

canonical属性とは

canonical属性とは、この正規URLを指定する際に使用する記述方法です。
canonicalはカノニカルと発音し、英語では「正統」、「標準」といった意味になります。

アレブログ(アレグロのブログ)

canonical属性で正規URLの指定が必要な理由

以下のようなケースでは表示される内容は同じであっても、URLのパターンは複数存在します。

正規化の必要性がある様々なURLパターン

有りのバーション無しのバーション
wwwhttp://www.allegro-inc.comhttp://allegro-inc.com
index.htmlhttps://www.allegro-inc.com/index.htmlhttps://www.allegro-inc.com
httpshttps://www.allegro-inc.comhttp://www.allegro-inc.com
パラーメータhttps://www.allegro-inc.com/?ref=bloghttps://www.allegro-inc.com
正規化の必要性がある様々なURLパターン

Googleは、このような複数のパターンのURLを別のページとして認識してそれぞれ評価してしまいます。または自動的に重複するページとして評価を統合する事もありますが、そうでない場合もあり得ます。

canonical属性を使用する事でこのような複数のURLパターンに分散してしまう被リンク評価を一つのURLに統合する事ができます。

評価の分散を防ぐためには、自身のウェブサイトのリンクの張り方を統一するという方法が有効ですが、外部サイトからのリンクに関してはコントロールできません。このような場合を想定してcanonical属性を使用して正規URLを指定しておくと評価を統合する事ができます。

正規化のイメージ
Google Developers
重複した URL を正規 URL に統合する | Google 検索セントラル  |  Google Developers サイトのコンテンツが重複している場合、Google によって正規リンクが選択されます。正規 URL と、重複する URL を統合する方法について詳細をご確認ください。

正規URLの指定方法

canonical属性を使用した正規URLの指定方法は以下の2パターンあります。

  • HTMLのheadタグ内に記述する方法
  • HTTPヘッダーで指定する方法

前者の方法は最も一般的な方法で、後者の方法は例えばPDFファイルなど、前者の方法で指定できない場合に代わりにHTTPヘッダーでcanonical属性を指定する事ができます。

HTMLのheadタグ内に記述する方法

以下のようにheadタグ内に記述する事で、wwwあり、なし、パラメータ付のurlなどを一つのURLに正規化し、検索エンジンのインデックスを統一する事ができます。

<head>

<link rel=”canonical” href=”https://example.com/product.php”>

</head>

HTTPヘッダーで指定する方法

例えば、コンテンツが同じで、以下の2つのURLが存在したとします。white-paper.pdfのHTML版がwhite-paper.htmlです

  • http://www.example.com/white-paper.html
  • http://www.example.com/white-paper.pdf

canonical属性を指定しなければ、Googleはどちらも別々のURLとして判断する為、リンク評価が分散してしまいます。
しかし、一方はPDFファイルの為、HTMLではない為、headタグ内にcanonical属性は記述できません。

このような場合はGoogleが「http://www.example.com/white-paper.pdf」にアクセスした際にHTTPヘッダーを使ってHTML版のURL「http://www.example.com/white-paper.html」が正規なURLである事を示して、評価を統合する事ができます。

設定後に確認するにはChromeであれば検証機能の「Network」タブをクリックして、該当のファイルを選択します。
次のように表示されているか確認しましょう。

GET /white-paper.pdf HTTP/1.1
Host: www.example.com
(…以下、他の HTTP リクエスト ヘッダー…)
HTTP/1.1 200 OK
Content-Type: application/pdf
Link: <http://www.example.com/white-paper.html>; rel=”canonical”
Content-Length: 785710
(…以下、他の HTTP レスポンス ヘッダー…)

Google ウェブマスター向け公式ブ...
HTTP ヘッダーでの rel="canonical" 属性に対応しました Google フレンドリーなサイト制作・運営に関するウェブマスター向け公式情報

正規化に関するよくある質問

GoogleはJavaScriptで記述されるcanonicalも処理する?

Googleはレンダリング後にクライアントサイド追加されるcanonicalは無視していましたが、一転して処理できるようになったようです。John Mueller氏が認めています。

別のドメインのURLへ正規化する事はできる?

現在はクロスドメインでも利用できるようです。例えばショッピングサイトを複数運営していて、同一の商材を扱っている場合などは理論上はドメインをまたいで使用する事ができます。ただしプラットフォーム側で制限が設けられている場合がほとんどかもしれません。(理由は、別のプラットフォームへ評価が統合されてしまうと、自身のプラットフォームが検索結果に掲載されなくなってしまうからです。)

正規化の際には301リダイレクトとcanonicalのどちらを使用すべき?

Googleからすると、rel=”canonical”は301リダイレクトのように作用します。一方で301リダイレクトと比べると、rel=canonicalは検索エンジン向けの記述で、閲覧者に対しては機能的には作用しません。
基本的には301を使用して正規化を行いつつ、外部サイトからパラメーター付でリンクされる事もある為、canonical属性も記述しておくと良いでしょう。

属性の順番はGoogleの認識に影響する?

いいえ。例えば以下の二つの記述はどちらも有効です。

<link rel=”canonical” href=”https://example.com” />
<link href=”https://example.com” rel=”canonical” />

Does the order of the canonical tag and URL in HTML matter? from r/TechSEO

正規化の注意点

正規化処理が行われるまでの時間

実際は、canonical属性によるURL正規化を行ったからといってすぐにGoogleの方で認識されるという事はないようです。リクエストとして受け取り、指定ミスの可能性が無いか確かめた上で最終的に処理されるようです。
その為、URLが正規化されるまでにはある程度時間がかかるようです。

John Mueller氏のコメントでは、rel=canonicalを指定したからといって、記述通りに処理されない事もあるようです。正規化を決定する為に、Googleは複数の要素を見ている為、このような事は起こり得るようです。

良くあるミスとしては、ウェブサイト内の全てのページでトップページを正規URLに指定しているケースがあります。このような場合はGoogleはミスとして認識して、記述自体を無視するようです。

URL内の/(スラッシュ)の有無による認識の違い

GoogleのJohn Muller氏のコメントでは、/(スラッシュ)の有無や位置によってGoogleに認識の違いが生じるようです。

  1. http://www.example.com/
  2. http://www.example.com
  3. https://www.example.com/
  4. https://www.example.com
  5. https://example.com/
  6. https://example.com/fish
  7. https://example.com/fish/

①と②、③と④のようなホスト名の後のスラッシュの有無で問題は生じないようです。つまり①と②は同じ、③と④は同じと認識されます。

一方でホスト名とプロトコルでは、異なるURLとして扱われます。つまり①と③は異なり、③と⑤も異なる為、別のURLとして認識されます。

パス/ファイル上のスラッシュの扱いも同様に別のURLとして認識されます。つまり⑥と⑦は別のURLとして認識されます。

ページネーションで2ページ目以降から1ページ目に正規化してはいけない

ページネーションで使用するページに重複コンテンツはないはずです。このような使い方をすると、ページネーションの2番目のページは表示されても、3ページ目以降は検索結果から除外される場合があり、コンテンツの評価を失うことになります。
検索結果に1ページ目を表示させたい場合はページネーションで使用するページを一つにまとめたコンポーネントページを作り、そこに向けてrel=canonicalを指定する方法があります。

rel=canonicalで指定するURLは絶対パスを記述

URLの指定は、絶対パスと相対パスというものがあります。絶対パスの場合は、「https://」から記述します。
当サイトを例にすると「href=”www.allegro-inc.com”」と指定してしまうと、検索エンジンは「http://www.allegro-inc.com/www.allegro-inc.com」として認識してしまいます。

その他一般的な注意点

  • 重複しているページコンテンツと正規化したURLのコンテンツの大部分が同じである事を確認する。
    扱うトピックは類似したものであっても、全く同じ単語や文章でなかった場合にはcanonicalの指定は無視されるかもしれません。
  • rel=canonicalのターゲットが存在するか確認する(404エラー、ソフト404がない)
    ソフト404はページ上では404エラーと表示されていても、サーバーからは404エラーをブラウザに返していない状態を言います。
  • rel=canonicalのターゲットがrobotsメタタグでnoindexとなっていないか確認する。
  • rel=canonicalで指定したURLは検索結果に表示させたいURLであるか確認する。誤って正規ではない重複するURLを指定していない事を確認しましょう。
  • rel=canonicalのリンクがhttpヘッダーまたはページの<head>タグ内に含まれている事を確認する。
  • rel=canonicalがページ内に複数存在していないか確認する。
    複数あると検索エンジンに無視されます。
  • 正規化の為にrobots.txtを使用しない。robots.txtで重複コンテンツをブロックすると各ページの評価を失い、結果的に評価が薄まってしまいます。

canonicalのエラーを一括で抽出する方法

SE RankingのサイトSEO検査ツールでは、canonicalの指定ミスも含め、ウェブサイトの全てのページのSEOに関する問題点を抽出してくれます。以下の手順で操作をお試しください。

STEP
SE Rankingのアカウントを作成

クレジットカード登録不要で、2週間無料のトライアルアカウントを作成できます。以下のページから登録をお試しください。

14日間無料トライアルに申し込む

STEP
プロジェクトを作成

以下の導入手順を参考に、プロジェクトを作成します。

導入手順

STEP
サイトSEO検査を実施

SE Rankingにログインし、左メニューの「サイトSEO検査」にアクセスし、検査を実行します。

サイトSEO検査
STEP
「問題点レポート」にアクセス

検査完了後に、左メニューの「サイトSEO検査」内のサブセクションの「問題点レポート」にアクセスします。
重複コンテンツやcanonicalの指定ミスに関するエラーが一括で抽出されます。エラーが表示されている場合は、表の「ページ」列の数字部分をクリックして、該当ページを確認しましょう。

お役に立ちましたか?シェアして頂けると嬉しいです!
アレブログ(アレグロのブログ)
閉じる