ページのローカライズ版について Google に知らせる
ページに言語や地域ごとの複数のバージョンがある場合、こうした別バージョンについて Google にお知らせください。それにより、Google 検索はユーザーの言語や地域に応じた最適なページのバージョンを表示できるようになります。
こうした情報がなくても、ページの別言語のバージョンを Google が検出することはありますが、言語や地域ごとのページを明示してあるほうが正確です。
次のような場合には、代替ページを指定することをおすすめします。
- ナビゲーションやフッターなど、テンプレートのみを翻訳し、コンテンツの大部分は 1 つの言語を使用する場合。フォーラムなど、ユーザー生成コンテンツを掲載するページでは、これが一般的です。
- コンテンツが 1 つの言語で書かれていて、コンテンツの大部分はほとんど同じであり、地域ごとにわずかに変化がある場合。たとえば、米国、英国、アイルランドのユーザーをターゲットにした英語のコンテンツです。
- サイトのコンテンツが複数の言語に完全に翻訳されている場合。たとえば、各ページについてドイツ語版と英語版の両方があるような場合です。
ページのローカライズ版は、ページのメイン コンテンツが翻訳されていない場合にのみ、重複と見なされます。
代替ページを指定する方法
ページに言語や地域ごとの複数のバージョンがあることを Google に知らせる方法には次の 3 つがあります。
この 3 つの方法のどれを使用しても Google からは同様に認識されるので、サイトに最も適した方法を選択できます。3 つの方法すべてを同時に使用することもできますが、Google 検索におけるメリットはありません(実際、3 つの実装を管理するのはおそらく 1 つに絞るよりはるかに困難です)。
hreflang を使用してコンテンツのバージョンを Google に知らせると、Google はそれらのページが同じコンテンツのローカライズ版であることを認識できます。Google が hreflang または HTML の lang 属性を使用してページの言語を検出することはありません。代わりに、アルゴリズムを使用して言語を決定します。
すべての方法に共通するガイドライン
- 他の言語のバージョンだけでなく、記載している言語のバージョンもリストに含める必要があります。
- 代替 URL は、転送プロトコル(http または https)を含む完全修飾形式で指定する必要があります。
つまり、//example.com/fooまたは/fooではなく、https://example.com/fooと指定します。 - 代替 URL は同じドメイン内である必要はありません。
-
同じ言語でも地域が異なるユーザーをターゲットにする代替 URL が複数ある場合、その言語で地域を特定できないユーザーを対象とする汎用の URL を提供することもおすすめします。たとえば、アイルランド(
en-ie)、カナダ(en-ca)、オーストラリア(en-au)の英語を使うユーザーそれぞれに専用の URL を用意する場合は、米国、英国など、英語を使う他のすべての地域のユーザーに汎用の英語(en)ページを提供してください。専用ページのいずれかを汎用ページとして指定してもかまいません。 - 2 つのページが互いに参照し合っていない場合、参照するタグは無視されます。これは、あなたのページの別バージョンを名乗るタグを、他のサイトの誰かが勝手に作成できないようにするためです。
- 各言語の双方向リンクをすべて含めたセットを維持するのが難しくなったら、一部のページで一部の言語についての指定を省略することができます。その場合でも Google は互いに参照し合うページについて処理します。ただし、新たに拡張した言語のページについては、元の言語または主要な言語のページと相互にリンクを設定することが重要です。たとえば、サイトが元々フランス語で作成されていて
.frの URL がある場合、後から作成するメキシコ(.mx)とスペイン(.es)向けのページについては、同じスペイン語のバリエーションであるページ(.mxと.es)の間で双方向リンクを設定することよりも、主要なサイトである.frとの間で双方向リンクを設定することのほうが重要です。 - どの言語にも一致しない場合の代替ページとして、言語や国を選択できるページや、自動リダイレクト先のホームページを指定することを検討してください。次のように、
x-default値を使用します。
<link rel="alternate" href="https://example.com/" hreflang="x-default" />
HTML タグ
ページのヘッダーに <link rel="alternate" hreflang="lang_code"... > 要素を追加して、ページの言語や地域ごとのすべてのバージョンを Google に提示します。これはそのサイトに対して、サイトマップを指定していない場合や、HTTP レスポンス ヘッダーを指定できない場合に便利です。
ページのバージョンごとに <link> 要素の一式を <head> 要素に含めます。各バージョン(そのページ自体のバージョンも含む)をそれぞれ 1 つのリンクで指定します。ページのどのバージョンについても、同じリンク一式を指定することになります。その他のガイドラインもご確認ください。
各 link 要素の構文は次のとおりです。
<link rel="alternate" hreflang="lang_code" href="url_of_page" />
| 構文 | |
|---|---|
lang_code |
ページのこのバージョンが対象とするサポートされている言語または地域のコード、またはページの hreflang タグで明示されていない任意の言語と一致する x-default。 |
url_of_page |
指定された言語 / 地域に対応するこのページのバージョンの完全修飾 URL。 |
<link> タグは、HTML の正しい形式の <head> セクション内に含める必要があります。判断がつかない場合は、レンダリングされたページからコードをコピーして HTML 検証ツールに貼り付け、リンクが <head> 要素内にあるかどうかを確認してください。
また、ドキュメントの代替表現として link タグを組み合わせないでください。たとえば、hreflang アノテーションを、単一の <link> タグ内の media などの他の属性と組み合わせたりしないでください。
例
Example Widgets 社が、米国、英国、ドイツのユーザーを対象にしたウェブサイトを作成しているとします。URL は次のとおりで、ほとんど同一のコンテンツですが、地域ごとに多少の違いがあります。
| URL の地域別のバージョン | |
|---|---|
https://en.example.com/page.html |
汎用的な英語のホームページ。米国から各国への送料に関する情報が掲載されています。 |
https://en-gb.example.com/page.html |
料金がポンドで表示される英国のホームページ。 |
https://en-us.example.com/page.html |
料金が米ドルで表示される米国のホームページ。 |
https://de.example.com/page.html |
ドイツ語のホームページ。 |
https://www.example.com/ |
特定の言語と地域を対象としないデフォルト ページ。ユーザーが言語と地域を選択できるセレクタがあります。 |
こうした URL 内の言語ごとのサブドメイン(en、en-gb、en-us、de)は、そのページのターゲット ユーザーを Google が判断する際には使用されませんので、ターゲット ユーザーを明示的にマッピングする必要があります。
URL の地域別のバージョンの表に記載されている全ページの <head> セクションで指定する HTML を以下に示します。これにより、米国のユーザー、英国のユーザー、英語を使うその他のユーザー、ドイツ語を使うユーザーにはローカライズされたページが表示され、それ以外のすべてのユーザーにはデフォルトのホームページが表示されます。Google 検索は、ユーザーのブラウザの設定に応じて適切な結果を返します。
<head>
<title>Widgets, Inc</title>
<link rel="alternate" hreflang="en-gb"
href="https://en-gb.example.com/page.html" />
<link rel="alternate" hreflang="en-us"
href="https://en-us.example.com/page.html" />
<link rel="alternate" hreflang="en"
href="https://en.example.com/page.html" />
<link rel="alternate" hreflang="de"
href="https://de.example.com/page.html" />
<link rel="alternate" hreflang="x-default"
href="https://www.example.com/" />
</head>HTTP ヘッダー
ページの GET レスポンスに返す HTTP ヘッダーを使って、そのページの言語や地域ごとのすべてのバージョンを Google に知らせることができます。これは、PDF のような HTML 以外のファイルの場合に便利です。
次の形式のヘッダーを返します。
Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
| 構文 | |
|---|---|
<url_x> |
関連する hreflang 属性に割り当てられた言語 / 地域の文字列に対応する代替ページの完全修飾 URL。URL は < 記号と > 記号で囲む必要があります。例: <https://www.google.com> |
lang_code_x |
ページのこのバージョンが対象とするサポートされている言語または地域のコード、またはページの hreflang タグで明示されていない任意の言語と一致する x-default。 |
下記の例に示すように、ページの各バージョンについて(リクエストされているバージョンも含めて)カンマで区切って、<url>、rel="alternate"、hreflang の一式を指定します。ページのどのバージョンでも、返される Link: ヘッダーは同じです。その他のガイドラインもご確認ください。
例
PDF ファイルに 3 つのバージョンがあるサイトから返される Link: ヘッダーの例を示します。3 つのうち、1 つは英語を使うユーザー用、1 つはドイツ語を使うスイスのユーザー用、もう 1 つはドイツ語を使うその他すべてのユーザー用です。
Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
<https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
<https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"サイトマップ
XML サイトマップを使用して、各 URL の言語や地域別のバージョンをすべて Google に知らせることができます。そのためには、各 URL を示す <loc> 要素を追加し、そのページの言語や地域別のバージョンごとに子エントリ <xhtml:link> のリスト(その URL 自体を含む)を指定します。したがって、あるページに 3 つのバージョンがある場合は、サイトマップに各バージョンの URL に対応するエントリを追加し、エントリごとに 3 つの同じ子エントリを指定します。
サイトマップのルール:
-
xhtml 名前空間を次のように指定します。
xmlns:xhtml="http://www.w3.org/1999/xhtml"
-
他のサイトマップの場合と同様に、URL ごとに個別の
<url>要素を作成します。 -
各
<url>要素内に、そのページの URL を示す<loc>子要素を指定します。 -
各
<url>要素に子要素<xhtml:link rel="alternate" hreflang="supported_language-code">を含めて、そのページのすべての代替バージョンのリスト(その URL 自体を含む)を指定する必要があります。子要素<xhtml:link>の順序は任意ですが、誤りを確認しやすくするため、同じ順序に統一することをおすすめします。子要素は、サイトマップの URL 制限では考慮されません。 - サイトマップをサイト内の該当するディレクトリにアップロードします。サイトマップには、サイトマップがホストされているディレクトリの子孫 URL のみを含めることができる点に留意してください。
- サイトマップに関するドキュメントは、サイトマップ拡張機能にも適用されます。一般的なサイトマップに関するガイドラインに必ず従ってください。
- その他のガイドラインもご確認ください。
例
英語を使う世界中のユーザーを対象とする英語のページのほかに、ドイツ語を使う世界中のユーザーを対象とする同じ内容のバージョンと、ドイツ語を使うスイスのユーザーを対象とする同じ内容のバージョンがあるとします。サイト内にあるこのページのすべての URL は次のとおりです。
www.example.com/english/page.htmlは、英語を使うユーザーを対象とします。www.example.de/deutsch/page.htmlは、ドイツ語を使うユーザーを対象とします。www.example.de/schweiz-deutsch/page.htmlは、ドイツ語を使うスイスのユーザーを対象とします。
上記の 3 つのページのサイトマップは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.example.com/english/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="https://www.example.de/schweiz-deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
<url>
<loc>https://www.example.de/deutsch/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="https://www.example.de/schweiz-deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
<url>
<loc>https://www.example.de/schweiz-deutsch/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="https://www.example.de/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="https://www.example.de/schweiz-deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://www.example.com/english/page.html"/>
</url>
</urlset>サポートされている言語または地域のコード
hreflang 属性の値は、1 つの値または、必要に応じて 2 つの値(ダッシュで区切る)で指定します。例: en-US。hreflang 属性の値については、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 Alpha 2 形式で指定します。
ベルギーのさまざまな言語を使う人をターゲットにする場合は、次の言語コードと地域コードを使用できます。
- 可(ドイツ語、ベルギーのユーザー向け):
de-be - 可(オランダ語、ベルギーのユーザー向け):
nl-be - 可(フランス語、ベルギーのユーザー向け):
fr-be - 不可(最初のコードは言語を示し、
beはベラルーシ語のため):be
ラベル付けを単純化するには、言語コードを単独で指定します。次に例を示します。
de: ドイツ語のコンテンツ、地域指定なしen-GB: 英語のコンテンツ、英国のユーザー向けde-ES: ドイツ語のコンテンツ、スペインのユーザー向け
1 つの言語に複数の文字体系がある場合は、国コードから適切な文字体系が取得されます。たとえば、台湾のユーザー向けに zh-TW を使用すると、自動的に文字体系が取得されます(この場合は繁体字中国語)。次のように、ISO 15924 を使用して文字体系を明示的に指定することもできます。
zh-Hant: 中国語(繁体)zh-Hans: 中国語(簡体)
他の言語コードと同様に、必要に応じて地域も指定できます。たとえば、米国のユーザーに対して中国語(簡体)を指定するには、zh-Hans-US を使用します。
一致しない言語用に x-default 値を使用する
予約値である x-default は、ユーザーのブラウザの設定が、他に指定されているどの言語や地域とも一致しない場合に使用されます。この値の使用が推奨されるのは、ユーザーの言語設定がサイトのどのローカライズ版にも一致しない場合の代替ページを指定するケースなどです。x-default 値はどのページでも使用できますが、言語選択のページ用に設計されているため、その種のページで最も効果的に機能します。
x-default 値に言語コードを指定する必要はありません。この値を指定するページは、サイトの言語設定と一致しない言語を設定しているユーザーを対象としているので、ページの言語を設定する意味はありません。
hreflang="x-default" アノテーションを実装するには、既存の hreflang アノテーションに link タグを追加し、href 属性を、サイトがユーザーの言語に対応していない場合にユーザーを誘導したい URL に設定します。HTML 実装の例を以下に示します。
<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" /> <link rel="alternate" href="https://example.com/en-us" hreflang="en-us" /> <link rel="alternate" href="https://example.com/en-au" hreflang="en-au" /> <link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />
トラブルシューティング
よくある誤り
hreflang を使用するうえで最もよくある誤りは次のとおりです。
-
相互リンクになっていない: ページ X がページ Y にリンクしている場合、ページ Y もページ X にリンクしている必要があります。
hreflangアノテーションを使用するすべてのページでこうした相互リンクが設定されていないと、そのアノテーションは無視されるか、正しく解釈されない可能性があります。たとえば、https://de.example.com/index.htmlの次のリンクについて考えてみます。 この場合、<link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
https://en-gb.example.com/index.htmlのhreflangリンクでもコンテンツのdeバージョンを参照している必要があります。<link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
- 言語コードが正しくない: 言語コードを使用する場合は、必ず、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 Alpha 2 形式で指定します。地域を単独で指定しても有効なコードにはなりません。
-
地域コードが正しくない: 指定しようとしている地域に正式に割り当てられたコード要素を ISO 3166-1 Alpha 2 形式で指定します。他の用途に予約されているコードを使用すると、Google 検索ではその部分のアノテーションは無視されます(たとえば、
hreflangアノテーションでEU、UN、UKを使用しても、Google 検索には影響しません)。
hreflang エラーをデバッグする
hreflang アノテーションのデバッグに使用できるサードパーティ ツールは数多くあります。よく使用されるツールをいくつか紹介します。なお、下記のツールは Google が管理またはチェックしているものではありません。
-
Aleyda Solis の
hreflangタグ生成ツール:hreflangタグの生成または修正に使用します。 -
Merkle SEO の
hreflangタグ テストツール: 単一のライブページにおけるhreflangタグの検証に使用します。