多言語サイトのhreflangは同じ内容の言語別URLを相互に示す
公開日: 執筆:佐藤
日本語版と英語版のように、同じ内容を別の言語で掲載するページには、rel="alternate"とhreflangで対応するURLを示します。日本語ページから英語ページだけへリンクするのではなく、両方のページへ同じURLの組を記述します。
hreflangは翻訳を作る機能でも、利用者を自動転送する機能でもありません。どのURLがどの言語または地域の利用者に対応するかをGoogleへ伝え、検索する人に適したURLを表示するための手掛かりです。
hreflangは対応するページ単位で指定する
hreflangの公式説明は、翻訳したページや、地域ごとに用意した同等のページを一組として示します。URLは同じサイト内でも、別のドメインでも指定できます。
対応させる単位はサイト全体ではなく、一つ一つのページです。日本語の会社案内には英語の会社案内、日本語の商品ページには英語の同じ商品ページを対応させます。下層ページのhreflangを、言語ごとのホームページへ一律に向けてはいけません。
先に、同じ内容を扱うURLを一行に並べた対応表を作ります。翻訳が存在しないページは、別の内容やホームページへ無理に対応させません。
| ページの内容 | 日本語URL | 英語URL |
|---|---|---|
| 会社案内 | http://www.example.com/ja/company/ |
http://www.example.com/en/company/ |
| サービス案内 | http://www.example.com/ja/service/ |
http://www.example.com/en/service/ |
この表はURLの対応を説明するための模式例であり、実在するサイトの構成ではありません。
日本語版と英語版の両方へ同じ組を記述する
日本語版と英語版のサービス案内を対応させる場合は、両ページのhead要素へ次の二行を記述します。
<link rel="alternate" hreflang="ja" href="http://www.example.com/ja/service/">
<link rel="alternate" hreflang="en" href="http://www.example.com/en/service/">
日本語ページにも、日本語ページ自身と英語ページへの指定を置きます。英語ページにも、同じ二行を置きます。Googleの公式例も、英語版とドイツ語版の両URLへ、英語版とドイツ語版を示す同じ組を記述しています。
一方のページだけに記述すると、URLの対応を相互に確認できません。テンプレートへ追加するときは、現在表示しているページのURLだけを差し替えるのではなく、そのページと同じ内容を扱う言語別URLの組を出力します。
言語だけを示す値と地域まで示す値を分ける
hreflang="ja"は日本語、hreflang="en"は英語を対象とします。言語に加えて特定の地域を対象にする場合は、hreflang="es-ES"やhreflang="es-MX"のように、言語と国を組み合わせます。
同じ英語ページを、国を限定せず英語利用者へ案内するならenを使います。米国向けと英国向けで、価格、配送条件、問い合わせ先などが異なるページを用意するなら、言語と地域を組み合わせる候補です。
国別のURLがあるという理由だけで、すべてのページへ地域を付ける必要はありません。言語だけを分けているのか、同じ言語でも地域ごとに内容を分けているのかを先に決めます。
lang属性とhreflangは示す対象が違う
html要素のlang属性は、そのHTML文書が何の言語で書かれているかを示します。link要素のhreflangは、リンク先にある別ページの言語または地域を示します。
日本語ページでは、文書自身の言語を<html lang="ja">で示します。そのうえで、対応する日本語URLと英語URLをrel="alternate"とhreflangで示します。langを書いたから言語別URLの関係も伝わる、またはhreflangを書いたから文書自身の言語指定は不要になる、という関係ではありません。
ページの言語を記述する作業と、対応する別URLを記述する作業を分けて確認します。
HTMLかXMLサイトマップで対応関係を管理する
hreflangの対応関係は、各ページのHTMLだけでなく、XMLサイトマップにも記述できます。Googleは2012年5月から、サイトマップ内のxhtml:linkによる指定を扱っています。HTMLのlink要素と、サイトマップのxhtml:linkは、同じ属性で同じ対応関係を示します。
ページ数が少なく、各言語のテンプレートで対応URLを確実に出力できるなら、HTMLで管理できます。ページ数が多く、翻訳の有無を別の一覧で管理しているなら、サイトマップへまとめる方法も選べます。
どちらを使う場合も、対応表を管理する担当者と更新方法を決めます。HTMLとサイトマップへ別々の担当者が異なる対応を書けば、指定方法が増えても正確にはなりません。一つの対応表から出力し、追加、URL変更、削除を各言語へ反映します。
一組のページで相互指定を確認してから広げる
最初から全URLへ追加せず、日本語版と英語版がそろっている一組を選びます。二つのページで、次の内容を照合してください。
- ページの中心内容が対応している。
- 各ページに、自分自身を含む同じURLの組がある。
hreflangの言語と、リンク先ページの言語が一致している。- 下層ページの指定先が、対応する下層ページになっている。
- URLを変更したとき、両ページの指定も更新できる。
hreflangを追加しても、翻訳の不足やページ内容の食い違いは直りません。まず一組のURLについて、対応表、両ページの出力HTML、実際のリンク先を照合します。正しい組を確認してから、同じ方法をほかのページへ広げます。
関連記事

