hreflang は、「このページには、こういう言語(と地域)向けの別バージョンがあります」と検索エンジンに伝えるための属性です。日本語の会社概要ページに英語版と中国語版があるとき、Google は hreflang を見て、英語で検索した人には英語版を、中国語で検索した人には中国語版を出します。設定しなくても各言語ページは個別にインデックスされますが、設定すると「同じページの言語違い」として扱われ、適切な言語版が検索結果に出やすくなり、重複コンテンツの懸念もなくなります。
書き方(HTML の head に入れる)
各ページの <head> に、自分自身を含むすべての言語版を列挙します。日本語サイト example.co.jp に、英語・簡体字中国語・韓国語版を global.example.co.jp で配信する例です。
<link rel="alternate" hreflang="ja" href="https://example.co.jp/company/">
<link rel="alternate" hreflang="en" href="https://global.example.co.jp/en/company/">
<link rel="alternate" hreflang="zh-Hans" href="https://global.example.co.jp/zh-Hans/company/">
<link rel="alternate" hreflang="ko" href="https://global.example.co.jp/ko/company/">
<link rel="alternate" hreflang="x-default" href="https://example.co.jp/company/">
- 言語コードは ISO 639-1(
en、ja、ko)。中国語は文字体系で分けるのが一般的で、簡体字はzh-Hans、繁体字はzh-Hant。地域を付けるならen-US、zh-TWのように書きます。 - x-defaultは「どの言語にも当てはまらない訪問者に出すページ」です。日本語が原文なら日本語ページを指定するのが自然です。言語選択ページがあればそれでも構いません。
- 相互参照が必須です。英語ページからは日本語ページを、日本語ページからは英語ページを、それぞれ指していないと無効になります。
- URL は絶対 URLで、実際に 200 で返るページを指定します。リダイレクトされる URL や noindex のページを指すと無視されます。
サイトマップで指定する方法
HTML を編集できない場合は、XML サイトマップに同じ情報を書けます。各 URL に、すべての言語版を xhtml:link で列挙します。
<url>
<loc>https://global.example.co.jp/en/company/</loc>
<xhtml:link rel="alternate" hreflang="ja" href="https://example.co.jp/company/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://global.example.co.jp/en/company/"/>
<xhtml:link rel="alternate" hreflang="ko" href="https://global.example.co.jp/ko/company/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.co.jp/company/"/>
</url>
サイトマップは別ホストにあっても、robots.txt から参照されていれば受け付けられます。example.co.jp/robots.txt に Sitemap: https://global.example.co.jp/sitemap.xml と書く方法です。
canonical との関係
rel="canonical" は「このページの正式な URL はこれ」という宣言で、各言語ページは自分自身を canonical にします。英語ページの canonical を日本語ページに向けてしまうと、「英語ページは日本語ページの重複です」と言っていることになり、英語ページがインデックスから外れます。hreflang は言語版同士を結び、canonical は各言語版の中で正式 URL を決める、と覚えてください。
よくある間違い
| 片方向の指定 | 日本語ページにだけ hreflang を書き、英語ページには書かない。相互参照がないため無視される。 |
|---|---|
| 言語コードの誤り | jp(正しくは ja)、cn(正しくは zh-Hans か zh-CN)、en-UK(正しくは en-GB)。 |
| canonical を原文に向ける | 翻訳ページが重複扱いになり、検索結果から消える。 |
| 翻訳していないページを指す | 英語版が存在しない URL を hreflang="en" で指すとエラーになる。言語版があるページだけに書く。 |
| JavaScript で後から挿入する | クローラーがレンダリング前に読むことがある。サーバーから返す HTML に含めるか、サイトマップで指定する。 |
設定できているかの確認
Google Search Console の「インターナショナル ターゲティング」は廃止されたため、現在は URL 検査で各言語ページがインデックスされているかを見るのが確実です。数週間後、「検索パフォーマンス」を国別に見ると、どの言語版がどの国で表示されているかが分かります。
Sotomuke の場合
Sotomuke が配信する翻訳ページには、言語別 URL・自分自身への canonical・全言語版の hreflang・x-default がサーバー側で自動的に入り、サイトマップにも同じ情報が含まれます。元の日本語サイト側に hreflang を置けるときは、元サイトから翻訳ページへリンクするの手順で、原文ページを含めたグループとして Google に伝えられます。
Sotomuke で試す
日本語サイトのURLを貼るだけで、トップページを翻訳したプレビューを無料で作成します。CMSの改修やタグの設置は不要です。公開は月額¥4,980から、最低契約期間なし。
