ガイド

多言語SEOを壊すhreflangの間違い10選

壊れたhreflang設定のほぼすべては、この10の間違いで説明がつきます。しかもその多くは何のエラーも出しません。見つけ方と直し方を1つずつ解説します。

執筆: WebDoctor編集部·2026年7月30日·2 分で読めます


hreflangの問題のほとんどは、10の間違いに集約されます。リターンリンクの欠落、自己参照の不在、無効な言語コードや地域コード、相対URL、正規URLでないページの指定、x-defaultの欠落、実装方法の混在、部分的なカバレッジ、ブロックされた代替ページ、そしてhreflangを重複コンテンツの解決策と考えること。それぞれに明確な症状と、具体的な直し方があります。

hreflangが実際にしていること

hreflangは、あるユーザーにどの言語版・地域版のページを見せるかを検索エンジンに伝えます。検索結果に出るURLを差し替える、ただそれだけです。ランキングを押し上げるものではありません。注釈が完璧なページでも、順位は自力で獲得しなければなりません。

正しいhreflangのセットとは

英語版、スペイン語版、そしてフォールバックという3つのバージョンを、その3ページすべてのhead内にlink要素として書いた例です。

<link rel="alternate" hreflang="en" href="https://example.com/page/">
<link rel="alternate" hreflang="es" href="https://example.com/es/pagina/">
<link rel="alternate" hreflang="x-default" href="https://example.com/page/">

同じ関係をXMLサイトマップで表現した例です。urlsetでxhtml名前空間を宣言する必要があります。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/page/</loc>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/page/"/>
    <xhtml:link rel="alternate" hreflang="es" href="https://example.com/es/pagina/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page/"/>
  </url>
</urlset>

スペイン語版のページも、まったく同じセットを持ちます。この対称性こそが仕組みのすべてであり、以下に挙げる間違いのほとんどは、その対称性を壊す方法にほかなりません。

1. リターンリンクの欠落

hreflangの関係は必ず双方向です。AがBを指すなら、BもAを指し返さなければならず、そうでなければ注釈は未確認として無視されます。症状:検索結果でバージョンが入れ替わらず、Search Consoleがリターンタグなしと報告する。直し方:一方通行のリストではなく、グループ内のすべてのページに同じ完全なセットを出力します。

2. 自己参照のhreflangがない

各ページは、自分自身のURLに対するhreflangエントリーを含めなければなりません。これを省くとセットが不完全になり、検索エンジンは整合の取れないセットを破棄します。直し方:自己参照を追加し、3言語のグループなら3ページすべてに3件のエントリーを持たせます。

3. 言語コードと地域コードの誤り

言語の値はISO 639-1のコードで、任意指定の地域はISO 3166-1 Alpha 2でなければなりません。地域だけを単独で使うことはできません。典型的な誤りが3つあります。en-GBとすべきところをen-UKと書く、zh-CN(中国での中国語)とzh-Hans(地域ではなく用字系のサブタグ)を混同する、そして英国のつもりでuk(実際はウクライナ語)を使うように、国名から言語を作り出す。無効な値は警告もなく破棄されます。

4. 相対URL

hreflangの値は、プロトコルを含む完全な絶対URLでなければなりません。/es/pagina/のような値は無効で、そのエントリーは読み飛ばされます。症状:テンプレート上は正しく見えるのに、どこにも登録されない注釈。直し方:毎回https://example.com/es/pagina/の形で書き出します。サイトマップのloc値と同じルールです。

5. 正規URLでない、リダイレクトする、noindexのURLを指す

hreflangとcanonicalは一致していなければなりません。各ページのcanonicalは自分自身を指し、hreflangの各値は別バージョンのcanonical URLを指します。リダイレクトするURL、別ページへ正規化されるURL、noindexのURLに注釈を付けると矛盾した指示になり、その衝突はたいてい、あなたの注釈が破棄される形で決着します。直し方:グループ内の各URLが200を返し、インデックス可能で、自分自身をcanonicalにしていることを確認します。

6. x-defaultの欠落と誤用

x-defaultは、カバーしていない言語のユーザー向けのフォールバックを示します。言語セレクター、グローバルのランディングページ、あるいは主要バージョンなどです。症状:対象外のロケールからの訪問者が、なりゆき任せのバージョンに着地する。直し方:本当のフォールバックを1つ決め、グループ全体で同じものを繰り返します。

7. 実装方法の混在

hreflangを書ける正しい場所は3つあります。head内のHTMLのlink要素、HTTPのLinkヘッダー、そしてXMLサイトマップ内のxhtml:link注釈です。どれか1つで機能します。問題が起きるのは、2つを中途半端に実装したときです。headには2言語しか並んでいないのに、サイトマップには4言語がある、といった状態になります。方法を1つ選び、その中で完全にしてください。

8. トップページだけに注釈を付ける

hreflangはページ単位のシグナルであり、サイト単位の設定ではありません。トップページにタグを付けても、その下にある500の商品ページには何の効果もありません。症状:市場ごとに正しいトップページは出るのに、その先のページは誤った言語のまま。直し方:すべてのページを本当の対応ページと組み合わせ、対応ページが存在しない言語は、近いものを指すのではなくセットから外します。

9. 代替ページをブロックしてクロールできなくする

関係が確認されるのは、両方のページを取得できる場合だけです。robots.txtで言語フォルダーをDisallowしたり、クローラーを弾くジオリダイレクトの背後に置いたりすると、リターンリンクの確認が成立しません。直し方:注釈を付けたすべてのURLを、リダイレクトなしでクロールでき到達できる状態に保ちます。

10. hreflangが重複コンテンツを解決すると期待する

hreflangが扱うのは地域と言語のバリエーションです。ほぼ同一のページを重複排除するものではなく、canonicalタグの代わりにもなりません。米国向けとオーストラリア向けのように、ほとんど同じ英語のページが2つあれば、両者は依然として互いに競合します。hreflangはそれぞれがどの市場向けかを述べるだけです。本物の重複には、正規化か統合が必要です。

どの実装方法を選ぶか

方法向いているケース主な欠点
head内のHTMLのlink要素HTMLページ、言語数が少ないサイト、テンプレート駆動のサイトマークアップが言語数の2乗で増え、ページを読み込むたびに送られる
HTTPのLinkヘッダーPDFなど、編集できるheadがない非HTMLファイルソース表示では見えず、サーバーやCDNの設定が必要で、移転の際に失われやすい
XMLサイトマップのxhtml:link大規模サイトや言語数の多いサイト。ページのマークアップを軽く保てる目視での確認が難しく、サイトマップが有効かつ最新でないとセット全体が古くなる

サイトマップ方式は最もスケールしますが、だからこそ静かに壊れます。名前空間の書き損じや古いままのファイルが、注釈もろとも道連れにするからです。ジェネレーターを変更したらサイトマップを検証し、大規模な多言語のセットはサイトマップインデックスで分割してください。

hreflangが機能しているか確かめる方法

双方向で確認します。ページAを取得して注釈のセットを読み、次にそこに書かれたすべてのURLを取得して、各ページが自分自身を含む同じセットを列挙しているかを確かめます。HTMLの方法はソース表示で、2つ目はレスポンスヘッダーで、3つ目はサイトマップで確認できます。非対称な箇所があれば、それがバグです。

プロパティで多言語ターゲティングのレポートが提供されている場合、Search Consoleはリターンタグの欠落や不明な言語コードといったhreflangのエラーを一覧してくれます。大規模に問題を把握するには最も早い方法です。デプロイからは遅れて反映されるため、あくまでセカンドオピニオンとして扱ってください。その下にあるクロール層の不具合については、サイトマップのエラーガイドが、注釈のセットを壊すリダイレクト、404、robots.txtによるブロックを扱っています。

hreflang多言語SEO

Frequently asked questions

サイトが1言語だけでもhreflangは必要ですか?
いいえ。1ページにつき1バージョンしかない単一言語のサイトには、入れ替えるものがありません。hreflangが役に立つのは、同じ内容を異なる言語や地域向けに公開し、検索エンジンに読者ごとの正しいバージョンを出してほしいときだけです。
en-UKは有効なhreflangの値ですか?
いいえ。言語部分はISO 639-1、地域部分はISO 3166-1 Alpha 2を使い、英国はGBです。en-GBと書いてください。無効なコードは警告もなく破棄されるため、ソース上は注釈があるように見えても、まったく効きません。
hreflangは順位を上げますか?
直接には上げません。変わるのは表示されるURLであって、そのURLの順位ではありません。ただし間接的な効果は本物です。自分の言語のバージョンに着地したユーザーは離脱しにくくコンバージョンも良くなり、自社の地域別ページ同士で競合することもなくなります。
x-defaultを省くとどうなりますか?
壊れはしません。検索エンジンは、列挙したロケール以外のユーザーには最も近いと判断したバージョンをフォールバックとして出します。x-defaultを追加すれば、その判断を自分で下せます。なりゆきに任せず、言語セレクターや主要なグローバルページを指定できます。
同じページでhreflangとcanonicalを併用できますか?
できますし、そうすべきです。各バージョンのcanonicalは自分自身を指し、hreflangは他のバージョンを指します。間違いは、すべての言語バージョンを1つのURLに正規化することです。それは他のバージョンをインデックスしないよう検索エンジンに伝えることになり、注釈を打ち消してしまいます。

チェックを実行

あわせて読みたい