ブログ · SEO

hreflang:言語別・国別ページを正しく設定する方法

hreflangは、検索ユーザーごとにどの言語・国向けのページを表示すべきかをGoogleに伝えるものです。本ガイドでは、3つの記述方法、Googleが実際に適用するコードのルール、相互リンク、x-default、canonicalとの関係、hreflangチェッカーが検出するエラーの修正手順を解説します。

Searvia · 2026/10/24 · 読了目安:2分

長いテーブルで、色違いの無地の表紙が付いた同一の冊子のセットを照らし合わせている2人の翻訳者

要点: hreflangは、検索ユーザーごとにどの言語・国向けのページを表示するかをGoogleに伝えるものです。各バージョンは、自分自身を含むすべてのバージョンを、ISO 639-1の言語コードと、任意のISO 3166-1 alpha-2の地域コード(en、de、en-GB、pt-BR)で列挙し、任意でx-defaultのフォールバックも指定します。リンクは絶対URLで、かつ双方向に張る必要があり、そうでなければGoogleは無視します。各バージョンには自己参照のcanonicalが必要で、別言語を指すcanonicalは設定を無効にしてしまいます。Googleはページの言語をコンテンツから判断するため、翻訳そのものも本物でなければなりません。

多言語・多国展開のサイトは、気づかないうちにトラフィックを失います。ドイツで英語ページが上位表示される、メキシコ向けページを作ったのにスペイン向けページが表示される、米国のユーザーにポンド表記の英国ストアが表示される、といった具合です。サイトに不具合はなく、Googleがどのバージョンを表示するかを推測しただけです。その推測をやめさせるのがhreflangです。

このガイドでは、Googleのドキュメントに基づくhreflangの仕組み、多くのサイトがつまずくコードのルール、canonicalとの関係、無料のhreflangチェッカーが検査する内容、各問題の修正方法を説明します。

hreflangができること・できないこと

hreflangのアノテーションは、互いに別バージョンであるページの集合(同じコンテンツの別言語版、または同じ言語を別の国向けに調整したもの)を示します。Googleはこれを使って、検索結果で適切なバージョンを表示します。

できないこと:

hreflangを追加する3つの方法

Googleは、3つの方法は「Googleの観点では同等」としています。ページごとに1つの方法を使いましょう。混在させるとエラーの温床になるだけです。

1. HTMLのlink要素(<head>内)。最も一般的な方法です。https://example.com/en/pricingの例:

<link rel="alternate" hreflang="en" href="https://example.com/en/pricing" />
<link rel="alternate" hreflang="de" href="https://example.com/de/preise" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/tarifs" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing" />

ドイツ語ページとフランス語ページにも、まったく同じ4行を記述します。Googleはタグが「整形式の<head>セクション内」にあることを求めています。画像やリンクより前にある閉じられていないタグなど、ブラウザーがbodyへ移動させる要素があると、headが途中で終わってしまうことがあります。

2. HTTPのLinkヘッダー。PDFなど非HTMLファイルでは唯一の選択肢です。

Link: <https://example.com/en/guide.pdf>; rel="alternate"; hreflang="en",
      <https://example.com/de/guide.pdf>; rel="alternate"; hreflang="de"

Googleによれば、ヘッダーはすべてのバージョンで同一である必要があります。

3. XMLサイトマップ。テンプレートの変更が不要なので、大規模サイトに便利です。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/en/pricing</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/pricing"/>
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/preise"/>
  </url>
  <url>
    <loc>https://example.com/de/preise</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/pricing"/>
    <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/preise"/>
  </url>
</urlset>

各<url>には、自分自身を含むすべてのバージョンを列挙します。

Googleが適用するルール

相互リンクと自己参照

「2つのページが互いを指していない場合、タグは無視されます」。壊れた設定の大半はこのルールが原因です。英語ページがドイツ語ページを列挙していても、ドイツ語ページが英語ページを列挙していなければ、Googleはそのペアを破棄します。また、Googleは「各言語バージョンは自分自身も列挙しなければならない」としています。

言語コードと地域コード

「ISO 639-1の言語コードとISO 3166-1 Alpha 2の地域コードのみがサポートされています」。言語が先で、地域は任意です。Googleは、zh-Hantとzh-Hansのように複数の文字体系で書かれる言語向けのスクリプトサブタグや、zh-Hans-USのような組み合わせにも対応しています。

コード有効か理由
en有効英語(地域を問わない)
en-GB有効英国向けの英語
pt-BR有効ブラジル向けのポルトガル語
zh-Hant有効繁体字の中国語
es-419Googleでは無効地域はISO 3166-1 alpha-2コードでなければならず、419(ラテンアメリカ)は該当しない
en-UK効果なしISOコードはGB。GoogleはUK、EU、UNは効果がないとしている
beベラルーシ語を意味する国コード単独は無効。beはベルギーではなくベラルーシ語
en_US無効アンダースコアではなくハイフンを使う
engGoogleでは無効3文字のISO 639-2コードは非対応。enを使う

ラテンアメリカ全域のスペイン語には、共通のスペイン語版としてesを使うか、対象国(es-MX、es-AR、es-CO)を個別に列挙して同じURLを指定します。

x-default

「予約値のx-defaultは、ユーザーのブラウザー設定に一致する言語・地域が他にない場合に使用されます」。言語選択ページやメインの国際版を指定しましょう。任意ですが有用です。指定しないと、提供していない言語の検索ユーザーには、Googleが選んだバージョンが表示されます。

絶対URL

「代替URLは、通信方式を含む完全修飾URLでなければなりません」。https://example.com/de/は有効ですが、/de/や//example.com/de/は無効です。

hreflangとcanonicalタグ

両者は一致していなければなりません。各バージョンのcanonicalは、英語版やメイン版ではなく自分自身を指すようにします。Googleのcanonical化ガイドは、「同じ言語のcanonicalページを指定する」こと、同じ言語のcanonicalページがない場合は「可能な限り最適な代替言語」を指定することを求めており、hreflangのクラスターが、相互にリンクし合うURLを優先する形でcanonicalの選択に影響すると述べています。

よくある間違いは、すべての言語バージョンに<link rel="canonical" href="https://example.com/en/...">を入れてしまうことです。これは他のバージョンが英語ページの重複だとGoogleに伝えることになり、hreflangのアノテーションごとインデックスから外れます。

ほかに避けるべき矛盾が2つあります。リダイレクトされるhreflang URL(最終的なURLを記載する)と、noindexが付いたhreflang URL(Googleがインデックスできないバージョンは表示できない)です。

サイト構造と自動リダイレクト

Googleの多地域ガイドは、URL構造を次のように比較しています。

構造例Googleの見解
国別ドメインexample.deジオターゲティングが明確。コストが高く、1ドメインにつき1か国
サブドメインde.example.com設定が簡単。URLからターゲティングが伝わりにくい場合がある
サブディレクトリexample.com/de/運用負荷が低く、同じホスト
URLパラメータexample.com?loc=de非推奨

どの構造を選ぶにせよ、IPやブラウザーの言語で訪問者を自動的にリダイレクトしてはいけません。Googleは、これが「ユーザー(と検索エンジン)がサイトのすべてのバージョンを見ることを妨げる可能性がある」こと、またGooglebotは「通常、米国から接続する」ことを指摘しています。代わりに案内バナーを表示し、検索結果についてはhreflangに任せましょう。

Searviaのhreflangチェッカーの仕組み

hreflangチェッカーは、ウェブサイトSEOチェッカーと同じエンジンで動作します。ドメインまたはページのアドレスを入力すると、そのページ(ドメインのみの場合はホームページ)と周辺のサイトファイルを約20秒で38項目にわたって監査し、このツールの主題である3項目を先頭に表示します。以下が検査内容です。

言語バージョン、hreflang(優先度:低)。 リダイレクトを追跡して最終アドレスに到達したうえで、そのページのHTMLにあるすべての<link rel="alternate" hreflang="..." href="...">要素を読み取ります。

ページの言語(優先度:低)。 <html>要素にlang属性があれば合格で、その言語を表示します。ない場合は警告です。

canonical URL(優先度:中)。 canonicalタグがページ自身を指していれば合格です。ない場合、または別のアドレスを指している場合は、そのアドレスを表示して警告します。

検査しないもの

結果の読み方

メッセージ意味対処
言語バージョンは宣言されていません(単一言語のサイトであれば問題ありません)。ページにhreflangリンクがない単一言語サイトでは対応不要。それ以外は手順1を参照
N件の言語バージョンが正しく宣言されています。コードが有効で自己参照がある。x-defaultのフォールバック(任意)がない場合はその旨が表示される相互リンクは引き続き手動で確認
言語バージョンにこのページ自身が含まれていません。ページが他のバージョンは列挙しているが自分自身を列挙していない手順2
無効な言語コードがあります。少なくとも1行に赤いバツ印がある手順3
ページの言語が宣言されていません。<html>にlangがない手順4
canonical URLが別のアドレスを指しています。canonicalが別のページを指定している手順5

A+からFまでの総合評価は38項目すべてを対象とし、優先度で重み付けされます(高10、中5、低2。警告は半分の得点)。「まず修正すべき項目」リストと共有可能なレポートも付属します。

hreflangの問題の修正方法

1. 言語バージョンが宣言されていないが、実際には存在する

2. 言語バージョンにこのページ自身が含まれていない

現在のページ自身の行を、そのページのコードで追加します。テンプレートでは、言語をループ処理する際に現在の言語をスキップしていることが多いので、その条件を外してください。自己参照のURLは、プロトコル、ホスト、末尾スラッシュの規則を含めてcanonical URLと同一にします。

3. 無効な言語コードがある

4. ページの言語が宣言されていない

ルート要素に言語を追加します(例:<html lang="en">、<html lang="pt-BR">)。Googleは言語の検出にこれを使いませんが、MDNが説明するように、ブラウザー、翻訳ツール、スクリーンリーダーは使用します。

5. canonicalが別のアドレスを指している

多言語サイトでは、これは言語をまたぐcanonicalの問題であることが多いです。各バージョンのcanonicalを、それぞれ自身のURLに変更します。canonicalが同じページの別形式(httpsではなくhttp、またはwwwなし)を指している場合は、最終的なアドレスと完全に一致させます。

6. 相互リンクがない(チェッカーでは検査されません)

2つのバージョンを並べて開き、hreflangの一覧を比べます。まったく同じセットでなければなりません。違いがある場合、原因はほぼ必ずそれらを生成するテンプレートやプラグインなので、生成元を一度直せばすべてのページが直ります。

実例(仮想)

以下は仮想の例であり、実データではありません。架空のアウトドアブランドKestrel Gearは、英語のexample.comに/de/、/fr/、/es/のバージョンを持っています。ドイツの検索ユーザーが英語ページにばかり到達します。hreflangチェッカーの報告は次のとおりです。

行URLOK
en-UKhttps://example.com/いいえ(→ en-GB)
de-DEhttps://example.com/de/はい
frhttps://example.com/fr/はい
es_EShttps://example.com/es/いいえ

canonical:「canonical URLはページ自身を指しています」。ページの言語:en。

es_ESのバツ印は形式エラーです。en-UKのバツ印には「→ en-GB」というメモが付いています。GoogleはUKを地域として受け付けないため、英語ページには使えるアノテーションがありませんでした。ドイツ語ページのソースを見ると3つ目の問題が見つかりました。canonicalが英語のホームページを指しており、Googleは/de/を重複として扱っていたのです。修正内容は次のとおりです。

20分でできるhreflangチェックリスト

Searviaでできること

無料のhreflangチェッカーは、入力したページのhreflangリンク、ページの言語、canonicalを、ウェブサイトSEOチェッカーの他の項目とともに、共有可能な1つのレポートで検証します。Searviaのアカウントでは、Search Consoleを接続して言語バージョンごとの国別クリック数と掲載順位を確認でき、毎週サイト監査を実行して、別ページを指すcanonical、言語バージョン間で重複するタイトル、壊れたページを検出できます。ウェブサイトだけでなくアプリも公開している場合は、ストア側の同じ課題を扱うApp Storeローカライズガイドをご覧ください。技術的なチェックリスト全体については、テクニカルSEO監査ガイドを参照してください。

よくあるご質問

hreflangとは何ですか?
hreflangは、ページの言語・国別バージョンをGoogleに伝えるアノテーションで、検索ユーザーごとに適切なバージョンを表示できるようにします。hreflang属性を持つrel="alternate"リンクとして、HTMLのhead内、HTTPのLinkヘッダー、またはXMLサイトマップに記述します。各バージョンは、自分自身を含むすべてのバージョンを、en、de、en-GBなどのコードで列挙し、任意でx-defaultのフォールバックも指定します。
hreflangは検索順位の向上に役立ちますか?
hreflangによってページの順位が上がるわけではありません。Googleが特定の言語や地域でどのバージョンを表示するかを選ぶのを助け、ドイツ語圏のユーザーに英語ページではなくドイツ語ページが表示されるようにします。hreflangがなくてもGoogleが適切なバージョンを判断できることはありますが、バージョン同士が似ている場合は、検索結果で言語が違うといったミスが起こりやすくなります。
hreflangのx-defaultとは何ですか?
x-defaultは、セット内のどの言語・地域もユーザーのブラウザー設定に一致しない場合に表示するページを示す、hreflangの予約値です。多くの場合、言語選択ページやメインの国際版を指定します。Googleはフォールバックページに使うことを推奨していますが、必須ではありません。
en-UKはhreflangの有効なコードですか?
いいえ。hreflangの地域コードはISO 3166-1 alpha-2の国コードでなければならず、英国のコードはGBなので、en-GBを使います。GoogleはhreflangアノテーションでUK、EU、UNを使ってもGoogle検索では効果がないとしています。国コード単独も無効で、hreflangはISO 639-1の言語コードで始める必要があります。
lang属性を使っていれば、hreflangは不要ですか?
いいえ、言語・国別のバージョンが複数ある場合は必要です。GoogleはHTMLのlang属性やhreflangをページの言語検出には使わず、表示されているコンテンツを読み取るとしています。lang属性はブラウザーやスクリーンリーダーの役に立ち、hreflangはバージョン同士の関係をGoogleに伝えます。両方を設定してください。

ソース

  1. Tell Google about localized versions of your page – Google Search Central
  2. Managing multi-regional and multilingual sites – Google Search Central
  3. How to specify a canonical URL – Google Search Central
  4. Redirects and Google Search – Google Search Central
  5. HTML lang global attribute – MDN Web Docs
  6. ISO 639 language codes – Library of Congress

続きを読む