ページに言語や地域ごとの複数のバージョンがある場合、こうした別バージョンについて Google にお知らせください。それにより、Google 検索はユーザーの言語や地域に応じた最適なページのバージョンを表示できるようになります。
こうした情報がなくても、ページの別言語のバージョンを Google が検出することはありますが、言語や地域ごとのページを明示してあるほうが正確です。
次のような場合に、代替ページを指定することをおすすめします。
- ナビゲーションやフッターなど、テンプレートのみを翻訳し、コンテンツの大部分は 1 つの言語を使用する場合。フォーラムなど、ユーザー生成コンテンツを掲載するページでは、これが一般的です。
- コンテンツが 1 つの言語で書かれていて、コンテンツの大部分はほとんど同じであり、地域ごとにわずかに変化がある場合。たとえば、米国、英国、アイルランドのユーザーをターゲットにした英語のコンテンツです。
- サイトのコンテンツが複数の言語に完全に翻訳されている場合。たとえば、各ページについてドイツ語版と英語版の両方があるような場合です。
ページのローカライズ版は、ページのメイン コンテンツが翻訳されていない場合にのみ、重複と見なされます。
代替ページを指定する方法
ページに言語や地域ごとの複数のバージョンがあることを示す方法は 3 つあります。
HTML タグ
ページのヘッダーに <link rel="alternate" hreflang="lang_code"... >
要素を追加して、ページの言語や地域ごとのすべてのバージョンを Google に提示します。これはそのサイトに対して、サイトマップを指定していない場合や、HTTP レスポンス ヘッダーを指定できない場合に便利です。
ページの各バージョンへのリンクを指定した <link>
要素を一式作成し、それを各バージョンの <head>
要素に、そのページ自体へのリンクも含めて指定します。ページのどのバージョンについても、同じリンク一式を指定することになります。その他のガイドラインもご確認ください。
各リンク要素の構文は次のとおりです。
<link rel="alternate" hreflang="lang_code" href="url_of_page" />
- lang_code
- ページのこのバージョンが対象とする言語や地域のコード、または
x-default
。このコードは、ページのどの hreflang タグにも明示されていない言語のユーザー向けのコードです。 - url_of_page
- 指定した言語や地域向けのバージョンへの完全修飾 URL。
<link>
要素の上部に <head>
タグ一式を配置します。<link>
タグは必ず、正しい形式の <head>
内に含めるか、<head>
内で <p>
やトラッキング ピクセルのようにセクションを途中で終わらせる可能性のあるアイテムより前に配置する必要があります。判断がつかない場合は、ページをレンダリングしてコードをコピーし、HTML 検証ツールに貼り付けて、そのリンク一式が <head>
要素内にあるかどうかを確認します。例
Example Widgets 社が、米国、英国、日本のユーザーを対象にしたウェブサイトを作成しているとします。URL は次のとおりで、ほとんど同一のコンテンツですが、地域ごとに多少の違いがあります。
- http://en.example.com/page.html - 英語の汎用のホームページで、米国から各国に配送する際の送料に関する情報が記載されています。
- http://en-gb.example.com/page.html - 英国版のホームページで、価格がポンドで表示されます。
- http://en-us.example.com/page.html - 米国版のホームページで、価格が米ドルで表示されます。
- http://ja.example.com/page.html - 日本語のホームページ。
- http://www.example.com/ - 特定の言語や地域を対象としていないデフォルト ページです。ユーザーが言語や地域を選択できるようになっています。
こうした URL 内の言語ごとのサブドメイン(en、en-gb、en-us、ja)は、そのページのターゲット ユーザーを Google が判断する際には使用されないので、ターゲット ユーザーを明示する必要があります。
上記のすべてのページで <head>
セクションに、下記の HTML を貼り付ける必要があります。これにより、米国のユーザー、英国のユーザー、その他英語を話すユーザー、日本のユーザーにはローカライズされたページが表示され、それ以外のすべてのユーザーにはデフォルトのホームページが表示されます。Google 検索は、ユーザーのブラウザの設定に応じて適切な結果を返します。
<head> <title>Widgets, Inc</title> <link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/page.html" /> <link rel="alternate" hreflang="en-us" href="http://en-us.example.com/page.html" /> <link rel="alternate" hreflang="en" href="http://en.example.com/page.html" /> <link rel="alternate" hreflang="de" href="http://de.example.com/page.html" /> <link rel="alternate" hreflang="x-default" href="http://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
- ページのこのバージョンが対象とする言語や地域のコード、または
x-default
。このコードは、ページのどの hreflang タグにも明示されていない言語のユーザー向けのコードです。
下記の例に示すように、ページの各バージョンについて(リクエストされているバージョンも含めて)カンマで区切って、<url>
、rel="alternate"
、hreflang
の一式を指定します。ページのどのバージョンを返す場合でも、Link: ヘッダーは同じです。その他のガイドラインもご確認ください。
例
PDF ファイルに 3 つのバージョンがあるサイトから返される Link:
ヘッダーの例を示します。3 つのうち、1 つは英語を話すユーザー用、1 つはドイツ語を話すスイスのユーザー用、もう 1 つはその他のドイツ語を話すすべてのユーザー用です。
Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en", <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch", <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"
サイトマップ
サイトマップを使用して、各 URL について言語や地域ごとのすべてのバージョンを Google に知らせることができます。それには、URL ごとに <loc>
要素を追加し、そのページの言語や地域別のバージョンごとに、子エントリ <xhtml:link>
をそれぞれ(その URL についても)作成してリストにします。したがって、ページに 3 つのバージョンがある場合、サイトマップには 3 つのエントリを追加し、それぞれに 3 つの同じ子エントリを指定します。
サイトマップのルール:
- xhtml の名前空間を、次のように指定します。
xmlns:xhtml="http://www.w3.org/1999/xhtml"
- URL ごとに
<url>
要素を作成します。 - 各
<url>
要素に、そのページの URL を示す<loc>
子要素を指定します。 - 各
<url>
要素には、そのページの代替バージョン(およびその URL)をすべて列挙する子要素<xhtml:link rel="alternate" hreflang="supported_language-code">
が必要です。この子要素<xhtml:link>
の順序は問いませんが、誤りを確認しやすくするために、同じ順序にすることをおすすめします。 - その他のガイドラインもご確認ください。
例
英語を話す世界中のユーザーを対象とした英語のページのほか、同等の内容で、ドイツ語を話す世界中のユーザーが対象のバージョンと、ドイツ語を話すスイスのユーザーが対象のバージョンがあるとします。サイト内の各 URL は次のとおりです。
- www.example.com/english/page.html - 英語を話すユーザーが対象
- www.example.com/deutsch/page.html - ドイツ語を話すユーザーが対象
- www.example.com/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>http://www.example.com/english/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> <url> <loc>http://www.example.com/deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> <url> <loc>http://www.example.com/schweiz-deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> </urlset>
各方法に共通のガイドライン
- 他の言語のバージョンだけでなく、記載している言語のバージョンもリストに含める必要があります。
- 代替 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)のページについては、主要なサイトである .fr サイトとの間に双方向リンクを設定することのほうが、同じスペイン語のバリエーションであるページ同士(.mx と .es)の間で双方向リンクを設定することよりも重要です。
- どの言語にも一致しない場合の代替ページとして、言語や国を選択できるページや、自動リダイレクト先のホームページを指定することを検討してください。この場合、x-default 値を次のように指定します。
<link rel="alternate" href="http://example.com/" hreflang="x-default" />
サポートされている言語または地域のコード
hreflang
属性の値としては、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 Alpha 2 形式で指定します(言語を地域に関連付ける必要はありません)。次に例を示します。
de
: ドイツ語のコンテンツ、地域指定なしen-GB
: 英語のコンテンツ、英国のユーザー向けde-ES
: ドイツ語コンテンツ、スペインのユーザー向け
国コードを単独で指定しないでください。Google が国コードから自動的に言語を取得することはありません。簡単に指定したい場合は、言語コードを単独で指定できます。言語コードの後に国コードを追加すると、そのページを特定の地域に限定できます。例:
be
: ベラルーシ語、地域指定なし(ベルギーではない)nl-be
: ベルギーのオランダ語fr-be
: ベルギーのフランス語
1 つの言語に複数の文字体系がある場合は、国コードから適切な文字体系が取得されます。たとえば、台湾のユーザー向けに zh-TW を使用すると、自動的に文字体系が判断されます(この場合、繁体字中国語)。ISO 15924 を使用して、次のように文字体系を明示的に指定することもできます。
zh-Hant
: 中国語(繁体)zh-Hans
: 中国語(簡体)
また、文字体系と地域を組み合わせて指定することもできます。たとえば、台湾のユーザー向けに中国語(簡体)を指定するには zh-Hans-TW
を使用します。
一致しない言語用に x-default タグを使用する
予約値である hreflang="x-default"
は、ユーザーのブラウザの設定が、他に指定されているどの言語や地域とも一致しない場合に使用されます。この値の指定は省略できますが、どの言語にも一致しない場合のページを管理する方法として指定することをおすすめします。おすすめの一例は、ユーザーが国を選択できるようなクリック可能な地図を掲載したサイトのホームページをターゲットにすることです。
困ったときに
よくある誤り
hreflang
を使用するうえで最もよくある誤りは次のとおりです。
- 相互リンクになっていない: ページ X がページ Y にリンクしている場合、ページ Y もページ X にリンクしている必要があります。hreflang アノテーションを使用するどのページでも、こうした相互リンクがないと、そのアノテーションは無視されるか、正しく解釈されないおそれがあります。
- 言語コードが正しくない: 言語コードを使用する場合は、必ず、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 alpha-2 形式で指定します。地域を単独で指定しても有効なコードにはなりません。
hreflang エラーをデバッグする
インターナショナル ターゲティング レポートを使って、最もよくある問題をデバッグできます。Google がページをクロールできるように時間をおいてから、レポートの [言語] タブに移動して、エラーが検出されているかどうかを確認します。
利用できるサードパーティのツールも多数あります。よく使用されるツールをいくつか紹介します(下記のツールは、Google が管理または確認しているわけではありません)。
- Aleyda Solis の hreflang Tags Generator Tool: hreflang タグの生成と修正用
- Merkle SEO の hreflang Tags Testing Tool: 単一のライブページにおける hreflang タグの検証用