hreflang完全ガイド:国際SEOの基本

言語・地域別ページの設計、相互参照するhreflangの実装、各URLが想定した読者に届くかの確認方法を解説します。

hreflangは、各ページがどの言語・地域向けかを検索エンジンに伝えるHTML属性です。Googleはこの情報をもとに、ユーザーの言語と地域に合ったバージョンを表示します。

hreflangがないと、Googleは適切なバージョンを自力で推測します。この推測はよく外れます。ロシア語ユーザーに英語ページが表示されたり、ドイツ人ユーザーにフランス語版が表示されたりします。CTRが下がり、直帰率が上がり、コンバージョンも減ります。

hreflangは、言語バージョン同士を相互リンクで結びます。各ページが、ほかのすべてのバージョンを明示的に指す必要があります。
hreflangが左右するのは、ユーザーにどのバージョンのページを表示するかです。検索順位に直接影響するものではありません。hreflangがなくてもGoogleからペナルティを受けることはありませんが、検索結果での関連性は失われます。

hreflangとは

hreflangで多言語サイトの各バージョンをつなぐ仕組みです。

hreflang属性は2011年に導入されました。Googleが、国際サイトの重複コンテンツ問題を解決するために作ったものです。/aboutというページが/en/about、/de/about、/fr/aboutとして存在する場合、Googleはこれらを重複とみなすべきではありません。それぞれ別の読者向けのページだからです。

2011

導入年

Googleが多言語サイト向けにhreflangを導入

179+

地域コード

Googleが対応するISO 3166-1 alpha-2コード

100%

相互参照

すべてのページバージョンが相互にリンクする必要あり

≤ 10ミリ秒

速度への影響

正しく実装したhreflangでサイトは遅くならない

hreflangに対応しているのはGoogleとYandexだけです。BingはContent-Languageメタタグ、HTTPヘッダー、URL構造、Webmaster Toolsでのジオターゲティングを使います。ロシア語圏のユーザーが対象に含まれる場合、Yandexで正しく動作させるためにhreflangが必要です。

hreflangが必要なケース

多言語サイトのすべてにhreflangが必要なわけではありません。この属性が実際に問題を解決する場面を押さえておきます。

状況hreflangの要否備考
同じ言語で国が異なる(en-US、en-GB)必要価格、綴り、キャンペーンなど内容が異なる
言語が異なる(en、de、fr)必要hreflangの基本的な用途
1言語・1地域のみ不要自己参照リンクを重ねる必要はない
すべての言語バージョンで内容が同一不要代わりにcanonicalを使う
部分的な翻訳(内容の70%以上)必要部分翻訳でもマークアップが必要
編集なしの機械翻訳不要Googleがスパムとみなす可能性がある
2つのページバージョンの内容がまったく同じ場合(たとえば違いのない/en-us/と/en-gb/)は、hreflangではなくcanonicalを使うほうが適切です。

構文と記述形式

hreflangには2つの規格のコードを使います。言語はISO 639-1、地域はISO 3166-1 alpha-2です。形式はlanguageまたはlanguage-REGIONです。

html
<!-- Language only -->
<link rel="alternate" hreflang="ru" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />

<!-- Language + region -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />

<!-- x-default: page for users without a matching locale -->
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

hreflangの地域は常に大文字(en-GB、fr-CA)、言語は小文字(en、fr)で書きます。実装ではすべて小文字にしているケースも多く、Googleはどちらも解釈できます。それでも、正式な表記に合わせるのが望ましい運用です。

コード意味
ruロシア語(全地域)
en英語(全地域)
en-USアメリカ向けの英語
en-GBイギリス向けの英語
de-ATオーストリア向けのドイツ語
zh-Hans簡体字中国語
zh-Hant繁体字中国語
x-default言語・地域が特定できない場合のページ

実装方法

hreflangの実装方法は3つあります。サイトの技術と規模に合わせて選びます。

1. headセクションのHTMLタグ

最も一般的な方法です。各ページの<head>に<link rel="alternate" hreflang="...">タグを追加します。重要なのは、ページのすべてのバージョンが、自分自身を含むほかのすべてのバージョンにリンクすることです。

html
<!-- Page /en/about — links to ALL versions -->
<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
  <link rel="alternate" hreflang="ru" href="https://example.com/about/" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/about/" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />
  <link rel="canonical" href="https://example.com/en/about/" />
</head>

2. HTTP Linkヘッダー

PDF、画像などHTML以外のリソースには、HTTPヘッダーを使います。この方法はどのページにも使えますが、サーバーの設定が必要です。

nginx
# Nginx: add hreflang via HTTP headers
add_header Link '</en/about/>; rel="alternate"; hreflang="en", </about/>; rel="alternate"; hreflang="ru", </de/about/>; rel="alternate"; hreflang="de"';

3. XMLサイトマップ

大規模サイト(10,000ページ以上)に最適な方法です。hreflangの関係をすべてサイトマップに記述するので、HTMLが肥大化せず、管理も一元化できます。

xml
<?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>https://example.com/en/about/</loc>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://example.com/en/about/"/>
    <xhtml:link rel="alternate" hreflang="ru"
                href="https://example.com/about/"/>
    <xhtml:link rel="alternate" hreflang="de"
                href="https://example.com/de/about/"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://example.com/en/about/"/>
  </url>
</urlset>
方法は混在させないでください。HTMLにhreflangを実装した場合は、サイトマップにも追加しないようにします。Googleが両方を処理するため、競合が起きることがあります。

x-default:言語選択ページ

x-defaultは、宣言したどの代替ページにも言語・地域が合わないユーザー向けのページを示す値です。一致するhreflangがない場合、Googleはこのバージョンを表示します。

  • 言語選択ページ:ユーザーが/choose-language/に着地し、自分のバージョンを選ぶ
  • サイトのメインバージョン:多くは英語版、またはGoogleにデフォルトで表示させたいバージョン
  • トップページ:サイトが複数言語の場合、x-defaultは/を指す
x-defaultは必須ではありませんが、Googleは追加を強く推奨しています。ない場合、一致するロケールがないユーザーには、インデックス内でたまたま表示されたバージョンが出ます。

canonicalとhreflang

canonicalとhreflangは解決する問題が異なりますが、組み合わせて機能します。ルールは単純です。ページにhreflangがある場合、canonicalは常に自分自身を指します(自己参照canonical)。

html
<!-- CORRECT: canonical points to self + hreflang covers all versions -->
<link rel="canonical" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="ru" href="https://example.com/about/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />

<!-- WRONG: canonical points to a different language version -->
<link rel="canonical" href="https://example.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />

英語ページのcanonicalがロシア語版を指していると、Googleは英語ページを重複とみなし、インデックスに登録しません。自己参照canonicalのないhreflangは、実質的に無意味です。

よくあるミス

監査データによると、hreflangを使っているサイトの約60%に、致命的なエラーが少なくとも1つあります。特に多いミスを紹介します。

ミス1:相互リンクの欠落

最も多い問題です。ページAはhreflangでページBにリンクしているのに、ページBからページAへのリンクがありません。相互参照のないhreflangは無効なため、Googleは無視します。

ミス2:言語コードの誤り

  • hreflang="en_US":ハイフンではなくアンダースコアを使っており、無効なコード
  • hreflang="english":ISOコードではなく単語を使っている
  • hreflang="zh-Hans"やhreflang="zh-Hant"ではなくhreflang="zh":中国語にはスクリプトの指定が必要
  • hreflang="ru"ではなくhreflang="ru-RU":方言のない言語に不要な地域コードを付けている

ミス3:インデックスされないページのhreflang

robots.txtでブロックされたページや、noindexを付けたページにhreflangを書いても意味がありません。Googleは、インデックスに登録できないページのhreflangを処理しません。

ミス4:言語による自動リダイレクト

ブラウザーの言語でユーザーをリダイレクトするサイトがあります。ロシア語ユーザーが/about/にアクセスすると、/ru/about/に転送される仕組みです。Googleには301リダイレクトとして見えるため、hreflangを正しく処理できません。対策は、リダイレクトせずにコンテンツを返し、JavaScriptによる切り替えかCookieを使うことです。

ミス5:404やリダイレクトを指すhreflangリンク

hreflangは、最終的な正規URLを指す必要があります。リダイレクトを経由するリンクや404のページへのリンクがあると、そのバージョンの属性は無効になります。

検証ツール

ツールチェック内容費用
Google Search Console国際ターゲティングレポートのhreflangエラー無料
Aleyda Solis hreflang tool1ページ単位のタグの有効性、リンクの相互参照無料
TechnicalSEO hreflang checker一括チェック、エラーのエクスポート無料/有料
Screaming Froghreflang分析を含むフルクロール有料
Ahrefs Site AuditSEO監査内のhreflangエラー有料
Semrush Site Audithreflang専用レポート有料

FAQ

hreflangは検索順位に影響しますか?
いいえ。hreflangは直接のランキング要因ではありません。特定のユーザーにどのバージョンのページを表示するかを左右しますが、検索結果での順位は変わりません。ただし、正しく実装すると間接的に指標が改善します。ユーザーが自分に合ったバージョンを見るため、直帰率が下がり、滞在時間とコンバージョンが伸びます。
サイトのすべてのページにhreflangが必要ですか?
ほかの言語に対応ページがあるページだけです。サービス用のページ(ログイン、チェックアウト、APIルート)、noindexのページ、言語違いの対応ページがないページには不要です。
hreflangが301リダイレクトのURLを指すとどうなりますか?
Googleはリダイレクトをたどろうとしますが、結果は予測できません。hreflangのパーサーによっては、途中のURLで処理を止めます。リダイレクトのない最終的な正規URLを必ず指定してください。
HTMLではなくサイトマップだけでhreflangを使えますか?
はい。大規模サイトでは、むしろこの方法が推奨されます。Googleは両方の方法を公式にサポートしています。同じページで両方を同時に使わないことがポイントです。
新しいhreflangがGoogleに処理されるまで、どのくらいかかりますか?
通常は数日から数週間で、サイトのクロール頻度によって変わります。早めたい場合は、hreflang付きのサイトマップをGoogle Search Consoleに追加し、主要ページの再インデックスをリクエストします。

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it