• canonicalタグは301転送・内部リンク・サイトマップと役割を分けて使う

canonicalタグは301転送・内部リンク・サイトマップと役割を分けて使う

公開日: 執筆:佐藤

canonicalタグは、同じ内容または包含関係にある内容を複数のURLで表示するとき、どのURLを代表にしたいか示すために使います。一般に「canonicalタグ」と呼ばれますが、HTMLへ記述するのはrel="canonical"を指定したlink要素です。

これは、閲覧者を別のURLへ移動させる転送ではありません。ページを削除する機能でも、検索結果への掲載や順位を保証する設定でもありません。恒久的に一つのURLだけを使うなら、まず301転送を検討します。複数のURLを閲覧可能なまま残す事情があり、内容が重複している場合に、rel="canonical"を検討します。

設定作業より先に、重複しているURLと、今後使う代表URLを一組ずつ決めてください。内部リンクとXMLサイトマップも同じ代表URLへそろえます。canonicalだけが別のURLを指している状態では、サイトの方針が分かれたままです。

canonicalが扱うのは、重複する内容の代表URLである

2012年4月に発行されたRFC 6596は、canonicalのリンク関係を、重複する内容の中から優先するIRIを示すものとして定義しました。代表URLの内容は、設定元と重複しているか、設定元の内容を含むものでなければなりません。

たとえば、次の二つのURLで同じサービス案内を表示しているとします。これは、形式を説明するための仮例です。

  • http://www.example.com/service/
  • http://www.example.com/service/?ref=mail

二つ目のURLにだけ計測用の文字列が付き、本文が同じなら、文字列のない一つ目を代表にする判断ができます。二つ目のHTMLのhead内へ、次のように記述します。

<link rel="canonical" href="http://www.example.com/service/" />

rel="canonical"の公式説明でも、並べ替え用の文字列やセッションIDなどにより、同じか非常によく似た内容へ複数のURLから到達する例が使われています。同資料は、rel="canonical"を命令ではなく、検索結果へ表示してほしいURLを示す手掛かりとして説明しています。

したがって、設定したURLが必ず選ばれるとは断定できません。サイト側が示す代表URLと、検索エンジンが他の情報を含めて判断するURLは、分けて考えます。

先に、301転送とcanonicalを分ける

同じ内容を一つのURLへそろえる方法は、canonicalだけではありません。閲覧者にも検索エンジンにも古いURLを使わせる必要がなく、恒久的に移転したなら、301転送が先の候補です。

末尾スラッシュの異なるURLを統一する説明は、両方のURLが同じ内容を返す場合、代表を一つ選び、内部リンクとサイトマップをそろえ、重複側から301転送する順序を示しています。301転送ができない場合の選択肢として、rel="canonical"も挙げています。

使い分けは、次のように考えます。

状態 先に検討する方法 理由
旧URLを今後使わず、新URLへ恒久的に移した 旧URLから新URLへの301転送 閲覧者も新URLへ移動し、移転の状態を応答で示せる
複数URLを閲覧可能なまま残す必要があり、内容が重複する rel="canonical" 閲覧を止めず、代表にしたいURLを示せる
URLごとに固有の内容がある どちらも重複扱いにしない 一方を代表にすると、他方の固有内容が扱われないおそれがある
ページを廃止し、直接対応する移転先もない 404など、公開終了に合う応答を検討する canonicalは削除を伝える機能ではない

「古いURLを消したい」という目的と、「同じ内容を複数URLで見せたい」という条件は別です。前者へcanonicalを入れても、閲覧者は古いURLを開けます。何を残し、どこへ移すかを先に決めます。

内容が違うページを、一つへまとめない

canonicalは、似た検索語を狙うページを一つへ寄せるための印ではありません。文章の一部だけが共通していても、読者へ渡す内容が違えば、単純な重複とは限りません。

RFC 6596は、複数ページに分かれた記事について、二ページ目から一ページ目をcanonicalにする例を避けるよう示しています。一ページ目は、二ページ目の内容を含まないためです。この設定では、二ページ目の固有内容が重複として扱われ、処理されないおそれがあります。一方、全ページの内容を含む「全件表示版」を代表にする例は、内容の包含関係がある場合として説明されています。

会社案内とサービス案内、一覧と個別ページ、地域ごとに固有情報がある案内などは、見出しが似ているという理由だけで一つへ寄せません。各URLの本文を読み、代表URL側に設定元の内容が実際に含まれているか確認します。

代表URLは、表示できる一つのURLへ直接向ける

設定先は、ブラウザで表示できる代表URLにします。RFC 6596は、一つのページから複数のcanonicalを指定しないこと、エラーを返すURLや別URLへ恒久転送するURLを設定先として避けること、canonicalの連鎖を避けることを示しています。

たとえば、AがBを指し、BがCを指すように連ねません。AとBの内容がCと重複し、Cを代表にするなら、AとBからCへ直接向けます。設定後にCを開き、予定した本文が表示されることも確認します。

記述するURLは、httpまたはhttpsから始まる完全な形にすると、基準を目で照合しやすくなります。RFC 6596とrel="canonical"の公式説明は相対IRIも認めていますが、base要素や設置階層による解釈を確認する仕事が増えます。これは規格上の必須条件ではなく、運用上の判断です。

robots.txtで隠す前に、検索エンジンが設定を読めるか考える

重複URLへcanonicalを記述しても、検索エンジンがそのページを取得できなければ、記述を確認できません。重複コンテンツをまとめる説明は、重複ページをrobots.txtで取得禁止にせず、301転送やrel="canonical"などで代表URLを示す考え方を示しています。

ただし、これは「すべての非公開ページを取得可能にする」という意味ではありません。重複URLの整理と、社内用・試験用・個人情報を含むページの公開制御は別の仕事です。公開してはいけないページをcanonicalだけで処理しません。

内部リンクとXMLサイトマップも、同じURLへそろえる

canonicalを設定しても、メニューはA、本文中のリンクはB、XMLサイトマップはCという状態では、サイト側の指定が一致しません。代表URLの統一に関する説明は、代表URLを内部リンクに使い、サイトマップにも代表URLだけを含めるよう案内しています。

URLごとに、次の項目を一行へまとめます。

確認項目 記録する内容
重複URL 同じ内容を表示しているURL
代表URL 今後、メニュー、本文、案内資料で使う一つのURL
HTTP応答 各URLが表示、転送、エラーのどれを返すか
canonical 誰が、どのテンプレートまたはページへ設定したか
内部リンク 重複URLがメニューや本文に残っていないか
XMLサイトマップ 代表URLだけが掲載されているか
確認日 変更後の表示とHTMLを確認した日

WordPressなどのCMSでは、テンプレート、追加機能、個別設定が同じlink要素を出す場合があります。製品名だけで判断せず、実際に出力されたHTMLを開き、canonicalが一つだけか、設定先が予定どおりかを確認します。本稿では、特定の追加機能を推奨しません。

決める人と実装する人を分ける

代表URLは、HTMLを編集する人だけで決める項目ではありません。今後、広告、印刷物、メール、電話案内などで使うURLにも関係するためです。

役割 責任
事業責任者 残すページと廃止するページ、今後使う代表URLを承認する
制作担当者 301転送またはcanonicalを実装し、内部リンクとサイトマップをそろえる
確認担当者 各URLの応答、表示内容、HTML内の設定、リンク先を確認する
アカウント管理者 サーバーとCMSの変更権限、設定記録、担当変更時の引き継ぎ経路を保つ

外部へ作業を委託する場合も、「canonicalを設定した」という報告だけで完了にしません。重複URL、代表URL、選んだ方法、変更箇所、確認結果を事業者側へ残します。契約上の権利は、実際の契約で別に確認してください。

最初の一手は、検索結果に二つ出ているかを探すことではありません。自社サイトで同じ本文を返すURLを一組選び、両方を開きます。今後も両方を閲覧可能にする必要があるかを決め、不要なら301転送、必要なら内容の重複を確認してcanonicalを検討します。最後に、内部リンクとXMLサイトマップを代表URLへそろえてください。

戻る