日本語 English(Home)

hreflangとは?書き方・言語コードと多言語サイトの設定手順

日本語と英語など複数の言語でページを用意するときに使うのがhreflangです。必要かどうかの判断から、URLの分け方、書き方と言語コード、翻訳が一部だけのときの扱い、レポート廃止後の確かめ方までを整理します。

hreflangとは?書き方・言語コードと多言語サイトの設定手順

この記事の要点:

  • 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は必須ではありません。どこにも当てはまらない人への入口を決めておきたい場合に使います。

翻訳が一部のページだけのときはどうするか

実際のサイトでは、すべてのページに全言語版がそろっていることは多くありません。翻訳の状況が一部だけのときは、次のように考えます。

  1. 翻訳がある組だけを結ぶ:日本語版にしか無いページには、英語のhreflangを書きません。存在しない言語版や、トップページなど内容の違うページを代わりに指定しないようにします。
  2. 各言語版のcanonicalは自分自身にする:Googleは、hreflangを使う場合、canonicalには同じ言語のページを指定するよう説明しています。言語版どうしを1つのURLにまとめるのは誤りです。
  3. 中身の無い言語版のページを公開しない:見出しやメニューだけが翻訳され、主な内容が翻訳されていないページは、重複として扱われます。用意できるまでnoindexにするか、公開を待ちます。

当サイト(seoagent.jp)では、以前は日本語と英語のページが同じURL体系の中に混ざっていました。そこで、日本語と英語のURLを分け(現在は日本語がトップ /、英語が /en/)、翻訳がある組だけにhreflangを付けました。x-defaultはトップページだけに付け、内容の無い言語のページはnoindexにしています。指定が意図どおりかは、ページのHTMLでhreflangを見て確認しました。

同じ言語で地域だけが違うページの扱いは、重複コンテンツの原因と直し方もあわせて参照してください。Googleは、このような場合にcanonicalとhreflangの両方を使うよう勧めています。

設定したあとの確かめ方

Search Consoleにあった「インターナショナル ターゲティング」レポートは廃止されました。Googleはhreflangを引き続きサポートし、使うと説明しています(Search Console ヘルプ:インターナショナル ターゲティング レポートの廃止)。現在は、次の手順で自分で確かめます。

  1. HTMLを見る:各言語版のページのソースを開き、hreflangの一覧に自分自身と全言語版があるかを確かめます。サイトマップで指定している場合は、サイトマップのファイルを開いて同じことを確かめます。
  2. 戻りの指定を確かめる:日本語版が英語版を指しているなら、英語版も日本語版を指しているかを見ます。
  3. 指定先の状態を確かめる:hreflangに書いたURLを開き、200が返ること、リダイレクトしないこと、noindexでないこと、canonicalが自分自身であることを確かめます。
  4. URL検査で確かめる:各言語版をSearch Consoleの「URL検査」にかけ、インデックス登録の状態と「Google が選択した正規 URL」を見ます。言語版が別の言語版に正規化されていれば、設定を見直します。
  5. 検索結果で確かめる:検索の言語や地域の設定を変えて、意図した版が表示されるかを見ます。ただし、表示はほかの要素の影響も受けるため、参考程度にとどめます。

ページ数が多い場合は、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の記事一覧」にまとめています。

参考情報

関連する記事

「テクニカルSEO」の記事をすべて見る →

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト
テクニカルSEO

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト

クロールバジェットは、多くのサイトでは気にする必要がありません。Google の「クロール バジェットの管理」の原文に沿って、決まる仕組み、対策が必要なサイトの目安、クロールの統計情報での確かめ方、クロールを無駄にする原因と対処を、当サイトの点検結果とあわせて説明します。

AIでSEO対策を、もっと続けやすく。

機能と使い方、料金・契約条件は、サービス資料でご案内します。