この記事の要点:
- hreflangとは、同じ内容の言語違い・地域違いのページがあることをGoogleに伝える指定です。検索した人に合った言語版のURLを表示するための手掛かりになります。
- hreflangはページの言語を判定するものでも、順位を上げるものでもありません。Googleはページの言語を、hreflangやlang属性ではなく自身の仕組みで判定すると説明しています。
- 言語版ごとに別のURLを用意し、各ページに自分自身を含む全言語版を書き、相手からも戻りの指定をもらうのが基本です。
- 翻訳が一部だけのサイトでは、翻訳がある組だけをhreflangで結びます。Search Consoleの「インターナショナル ターゲティング」レポートは廃止されているため、確認はHTMLとURL検査で行います。
hreflangとは:何をしてくれて、何をしないのか
hreflangとは、同じ内容の言語違い・地域違いのページがあることをGoogleに伝える指定です。Googleは、検索した人の言語や地域に合ったURLを検索結果に表示する手掛かりとして使います(Google 検索セントラル:ページのローカライズ版について Google に知らせる)。
例:日本語の記事と英語の記事がある場合、hreflangで2つのページの関係を伝えると、英語で検索した人には英語版、日本語で検索した人には日本語版が表示されやすくなります。
誤解されやすい点を表にまとめます。hreflangの役割は「どの言語版を見せるか」の案内であり、それ以上のことはしません。
| よくある期待 | 実際のところ |
|---|---|
| ページの言語をGoogleに教える | Googleは、hreflangやHTMLのlang属性ではなく、自身の仕組みでページの言語を判定すると説明しています。本文がその言語で書かれていることが前提です |
| 海外での検索順位が上がる | 順位を上げる指定ではありません。同じ内容の言語版の中で、どのURLを表示するかの手掛かりです |
| 翻訳したページが重複扱いされるのを防ぐ | 主な内容が翻訳されていれば、そもそも重複とは扱われません。重複になるのは、主な内容が翻訳されていない場合です |
| 片方のページに書けば済む | 相手のページからも戻りの指定が必要です。片方だけでは無視される場合があります |
hreflangが必要なサイト、不要なサイト
hreflangは、すべてのサイトに必要なものではありません。同じ内容を複数の言語や地域向けに用意しているかどうかで判断します。
| サイトの状態 | hreflang | 理由 |
|---|---|---|
| 日本語だけのサイト | 不要 | 案内する別の言語版がありません |
| 日本語と英語で、同じ内容を翻訳して載せている | 必要 | 検索した人の言語に合った版を示せます |
| 英語のページを、アメリカ向けとイギリス向けに分けている | 必要 | 同じ言語で地域だけが違うため、内容が似やすく、表示するURLを取り違えやすくなります |
| 英語版はあるが、日本語版とは別の内容(海外向けの会社案内だけ等) | 対応する組だけ | 内容が対応していないページどうしを結ぶ必要はありません |
| 表示言語をCookieやブラウザの設定で切り替え、URLは1つ | 先にURLを分ける | hreflangはURLとURLの関係を伝える指定なので、URLが1つでは書けません |
最後の行のように、hreflangの前にURLの設計が必要なサイトもあります。次の節で分け方を説明します。
多言語サイトのURLはどう分けるか
Googleは、言語ごとに別のURLを使うことを勧めています。Cookieやブラウザの設定で、同じURLのまま表示言語を切り替える方法は避けます(Google 検索セントラル:多地域、多言語のサイトの管理)。
| 方式 | 例 | 長所 | 注意点 |
|---|---|---|---|
| 国別ドメイン | example.jp、example.de | 対象の国がはっきりする | ドメインごとに取得・管理が必要。国を対象にする場合向き |
| サブドメイン | ja.example.com | 言語ごとにサーバーを分けやすい | ドメインの設定や計測の設定がサブドメインごとに必要になる |
| サブディレクトリ | example.com/ja/ | 1つのサイトとして管理しやすい | サーバーの場所は1つになる |
| URLパラメータ | example.com/?lang=ja | 既存のURLに付け足しやすい | Googleは推奨していない |
どれを選んでも、hreflangの書き方は変わりません。運用する体制や、地域ごとにサーバーを分ける必要があるかで選びます。
言語の自動リダイレクトは避ける
利用者のIPアドレスやブラウザの言語設定を見て、自動で別の言語版へ転送する作りは避けます。Googleの説明では、Googlebotは主にアメリカのIPアドレスからクロールし、言語の希望を伝えるAccept-Languageヘッダーを付けずにリクエストします。自動で転送すると、一部の言語版がクロールされない可能性があります(Google 検索セントラル:ロケール適応型ページのクロール)。
代わりに、各ページに言語を切り替えるリンクを置きます。どの言語にも当てはまらない人のためには、後で説明するx-defaultを使います。
hreflangの書き方:3つの方法と選び方
書き方はHTMLのlinkタグ、XMLサイトマップ、HTTPヘッダーの3つです。Googleにとってはどれも同じ扱いなので、管理しやすい1つを選びます。複数の方法を混ぜると、食い違ったときに原因を探しにくくなります。
| 方法 | 向いているサイト | 注意点 |
|---|---|---|
| HTMLのlinkタグ | ページ数が少ない、テーマやプラグインで出力できる | 言語版が増えるほど、各ページのheadが長くなる |
| XMLサイトマップ | ページ数や言語数が多い | ページのHTMLを見ても指定が分からないため、確認の手順を決めておく |
| HTTPヘッダー | PDFなど、HTML以外のファイル | サーバーの設定が必要 |
HTMLのlinkタグ
各ページの<head>に、自分自身を含むすべての言語版を書きます。日本語版にも英語版にも、同じ一覧を入れます。
<link rel="alternate" hreflang="ja" href="https://example.com/ja/page/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
XMLサイトマップ
<url>ごとに、xhtml:link要素で自分自身を含む言語版を並べます。英語版の<url>にも同じ一覧を書きます。サイトマップの基本はXMLサイトマップの書き方と送信を参照してください。
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/ja/page/</loc>
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/page/" />
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
</url>
<url>
<loc>https://example.com/en/page/</loc>
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/page/" />
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
</url>
</urlset>
HTTPヘッダー
PDFなどHTML以外のファイルでは、HTTPレスポンスのLinkヘッダーで指定します。
Link: <https://example.com/ja/guide.pdf>; rel="alternate"; hreflang="ja",
<https://example.com/en/guide.pdf>; rel="alternate"; hreflang="en"
言語・地域コードとx-defaultの決め方
hreflangの値は、言語コード(ISO 639-1)を先頭に書き、必要なら地域コード(ISO 3166-1 Alpha 2)を続けます。この2つの規格に無いコードは使えません。例として、Googleは「es-419」(中南米のスペイン語)には対応していないと明記しています。
| 指定の例 | 意味 | よくある誤り |
|---|---|---|
| ja | 日本語(地域を問わない) | 「jp」は国のコードで、言語のコードではありません |
| en | 英語(地域を問わない) | ― |
| en-US | 英語・アメリカ向け | 「us」だけの地域のみの指定はできません |
| en-GB | 英語・イギリス向け | 「en-UK」は誤りです |
| zh-Hans/zh-Hant | 中国語(簡体字)/中国語(繁体字) | 文字体系はISO 15924のコードで指定できます |
| zh-TW | 中国語・台湾向け | 地域から文字体系(繁体字)が判断されます |
| x-default | どの言語版にも当てはまらない人向けのページ | ― |
地域を付けるのは、同じ言語で地域ごとに内容が違う場合だけで十分です。例:英語版が1つしかないなら、「en」だけを使います。
x-defaultに何を指定するか
x-defaultは、検索した人の言語や地域に合う版が無いときに表示するページを示します(Google 検索セントラル ブログ:x-default の活用方法)。指定先は次のどちらかが一般的です。
- 言語を選ぶページ:トップで言語を選んでもらうサイトでは、その選択ページを指定します。
- 標準として見せたい言語版:例:海外向けには英語版を見せたい場合、英語版を指定します。
x-defaultは必須ではありません。どこにも当てはまらない人への入口を決めておきたい場合に使います。
翻訳が一部のページだけのときはどうするか
実際のサイトでは、すべてのページに全言語版がそろっていることは多くありません。翻訳の状況が一部だけのときは、次のように考えます。
- 翻訳がある組だけを結ぶ:日本語版にしか無いページには、英語のhreflangを書きません。存在しない言語版や、トップページなど内容の違うページを代わりに指定しないようにします。
- 各言語版のcanonicalは自分自身にする:Googleは、hreflangを使う場合、canonicalには同じ言語のページを指定するよう説明しています。言語版どうしを1つのURLにまとめるのは誤りです。
- 中身の無い言語版のページを公開しない:見出しやメニューだけが翻訳され、主な内容が翻訳されていないページは、重複として扱われます。用意できるまでnoindexにするか、公開を待ちます。
当サイト(seoagent.jp)では、以前は日本語と英語のページが同じURL体系の中に混ざっていました。そこで、日本語と英語のURLを分け(現在は日本語がトップ /、英語が /en/)、翻訳がある組だけにhreflangを付けました。x-defaultはトップページだけに付け、内容の無い言語のページはnoindexにしています。指定が意図どおりかは、ページのHTMLでhreflangを見て確認しました。
同じ言語で地域だけが違うページの扱いは、重複コンテンツの原因と直し方もあわせて参照してください。Googleは、このような場合にcanonicalとhreflangの両方を使うよう勧めています。
設定したあとの確かめ方
Search Consoleにあった「インターナショナル ターゲティング」レポートは廃止されました。Googleはhreflangを引き続きサポートし、使うと説明しています(Search Console ヘルプ:インターナショナル ターゲティング レポートの廃止)。現在は、次の手順で自分で確かめます。
- HTMLを見る:各言語版のページのソースを開き、hreflangの一覧に自分自身と全言語版があるかを確かめます。サイトマップで指定している場合は、サイトマップのファイルを開いて同じことを確かめます。
- 戻りの指定を確かめる:日本語版が英語版を指しているなら、英語版も日本語版を指しているかを見ます。
- 指定先の状態を確かめる:hreflangに書いたURLを開き、200が返ること、リダイレクトしないこと、noindexでないこと、canonicalが自分自身であることを確かめます。
- URL検査で確かめる:各言語版をSearch Consoleの「URL検査」にかけ、インデックス登録の状態と「Google が選択した正規 URL」を見ます。言語版が別の言語版に正規化されていれば、設定を見直します。
- 検索結果で確かめる:検索の言語や地域の設定を変えて、意図した版が表示されるかを見ます。ただし、表示はほかの要素の影響も受けるため、参考程度にとどめます。
ページ数が多い場合は、HTMLやサイトマップからhreflangを読み取って一覧にし、戻りの指定と指定先のステータスをまとめて調べると効率的です。
よくある間違い
| 間違い | 起きること | 直し方 |
|---|---|---|
| 相手のページから戻りの指定が無い | 指定が無視される場合がある | 関係するすべてのページに、同じ一覧を書く |
| 自分自身を一覧に含めていない | 一覧が不完全になる | 各ページの一覧に自分自身も入れる |
| 「jp」「en-UK」など誤ったコード | その指定が使われない | ISO 639-1とISO 3166-1 Alpha 2のコードに直す |
| リダイレクト・404・noindexのURLを指定 | 指定先が言語版として使えない | 最終的に200を返す正規URLを書く |
| 言語版のcanonicalを1つの言語にまとめる | ほかの言語版がインデックスされにくくなる | 各言語版のcanonicalを自分自身にする |
| 相対パスで書く | 意図しないURLと解釈されることがある | https://から始まる完全なURLで書く |
| http・wwwの有無などURLの表記が正規URLと違う | 指定先がリダイレクトになる | URL正規化で決めた表記にそろえる |
canonicalの使い方そのものは「canonicalとは」で説明しています。
よくある質問
hreflangを設定すると、海外からのアクセスは増えますか?
hreflangは、すでにある言語版の中からどれを表示するかの手掛かりで、アクセスを増やす指定ではありません。対象の言語で検索される内容があり、その言語版がインデックスされていることが前提です。
HTMLのlang属性とhreflangは両方必要ですか?
役割が違います。lang属性はページの言語をブラウザや読み上げソフトに伝えるもの、hreflangは言語版どうしの関係を伝えるものです。Googleはどちらも言語の判定には使わないと説明していますが、lang属性は利用者のために正しく書いておきます。
機械翻訳したページにもhreflangを付けてよいですか?
hreflangの付け方は翻訳の方法で変わりません。ただし、読む人の役に立つ品質かどうかは別の問題です。内容を確かめずに大量に公開すると、品質の面で問題になる可能性があります。公開前に、その言語が分かる人が確認することをおすすめします。
WordPressではどう設定しますか?
多くの場合、多言語プラグインやテーマがhreflangを出力します。設定後は、ページのソースで一覧が正しいか、翻訳の無いページに存在しない言語版が出ていないかを確かめてください。
SEOAGENTでできること
SEOAGENTでは、日本語・英語・ベトナム語・ネパール語から言語を選んで記事を作成し、WordPressへ投稿できます。hreflangの出力は、WordPressのテーマや多言語プラグインの設定で行います。多言語プラグインの対応範囲は、接続する環境ごとに確認が必要です。
hreflangと関わるテクニカルSEOの記事は「テクニカルSEOの記事一覧」にまとめています。


