Google新機能追加 続き

rel="alternate" hreflang="x"と rel="canonical" 役割の違い
Googleの公式ヘルプ記事を読むと、rel="alternate" hreflang="x"アノテーションと rel="canonical" 属性の話が出てきますが、両者は全く別物です。

ここで各々の役割について整理しましょう。
rel="alternate" hreflang="x":各々のページが閲覧対象とする国・地域・言語を属性情報として追加し、Googleにシグナルとして伝えるための役割を持つ。
rel="canonical":重複したコンテンツをグルーピングして、優先表示URLをGoogleに伝える。また、そのグループ内のインデックスプロパティを統合する役割を持つ。

hreflang はターゲット地域・言語をGoogleに対して明示するための記述、rel=canonical は、重複コンテンツをグルーピングするための記述です。両者はコンセプトが全く異なるので、同時に記述できます。
rel=canonical がオプションとして記述する必要があるのは、ターゲットと関係ない、ジェネリック言語における優先表示URLを決めておく必要があるためです。たとえば、米国向け英語ページとシンガポール向け英語ページの2つがあったと仮定すると、日本人がgoogle.co.jpで英語キーワードで検索した時のケースが想定されます。つまり、同一言語で記述された複数ページが存在した時に、汎用的にはどれを表示したいか決めておくのがcanonicalです(インデックスプロパティ統合の役割もある)。

rel="alternate" hreflang="x"と rel="canonical" の実装例
以上を踏まえて、具体的な例をあげてみましょう。今回は次のケースを考えてみます。

www.example.com 国際版・主コンテンツは英語
en-gb.example.com 英国版・主コンテンツは英語
en-us.example.com 米国版・主コンテンツは英語
fr.example.com フランス版・主コンテンツは仏語
fr-ca.example.com カナダ版・主コンテンツは仏語

英語で記述した3つの国・地域向けのページ(3つ)と、フランス語で記述した2つの国向けのページ(2つ)があります。この場合、各々のページの head セクションにはどのように記述したらいいでしょうか。
まず、次の hreflang を全てのページ(5ページ)に共通で記述します。







以上の記述で、各ページに地域・言語のシグナル情報を追加することができました。しかし、国を限定しない、"一般"英語及びフランス語の検索ユーザーに対してどのページを表示すべきかという課題は解決されていません(例えば、日本人ユーザーが日本からフランス語で検索した場合、同じく英語で検索した場合に表示したいURL)。つまり、重複コンテンツの問題を解決する必要があります。英語コンテンツ(3ページ)と、フランス語コンテンツ(2ページ)が、それぞれ重複状態にありますので、これを解消しましょう。

まず英語コンテンツの重複を解決します。ここでは国際版としての www. を canonical URL つまり代表URLと定めます。そこで、www、en-gb、en-us それぞれのページに次の1行を追加します。
英語ページに共通して次の1行を追加



同様にフランス語コンテンツの重複も解決します。ここではフランス向けのフランス語ページをcanonical URL と定めます。そこで、fr、fr-ca それぞれのページに次の1行を追加します。
フランス語ページに共通して次の1行を追加


英語ページに、フランス語ページのcanonical を追加したり、その逆を行ってはいけません。言語が完全に異なりますので、canoical を利用することはできません。多地域を対象とした同一言語で記述されたコンテンツの中で canonical を指定します。
上記の例では、英語グループとフランス語グループにわけて、それぞれのcanonical URL を決定し、そのグループ内で canonical を指定しています。

……という事でしたよ(長っ)