メインコンテンツへスキップ
← すべてのガイド

hreflang

hreflang は、複数のページが異なる読者向けの同じ内容であることを検索エンジンに伝え、正しい版を出させるためのものです。従わないこともある信号であって、従わねばならない指示ではありません。

セットを解釈可能に保つ 4 つのルール

hreflang は複数ページ間のアノテーションの集合なので、一方のエラーが Google の関係解釈に影響することがあります。Google は、リターンリンクの欠落や無効なアノテーションは無視されたり誤って解釈されたりする可能性があると説明しています。ただし、1 つの誤りが必ずクラスター全体を無効にするとはしていません。

  • 完全であること:グループ内の各版が、他のすべての版を列挙する。
  • 相互: X が Y を指している場合、Y は X を指している必要があります。リターン リンクが欠落していると、注釈が無視されたり、誤って解釈されたりする可能性があります。
  • 自己参照であること:各ページが他の版と並べて自分自身も列挙する。
  • 有効であること:コードが本物の言語コード・地域コードとして読めること。

hreflang は 1 ページだけの属性ではなくページ間の関係を表すため、相互リンクは実装時につまずきやすい点です。対応するリターンリンクを同時に公開し、Google がどちら側をクロールしても関係が完全に確認できる状態にします。

注釈をどこに置くか

置き場所は三つあり、効果は同等です。一つを選んで全体で通してください。サイト内で混在させることこそ、集合が半端に宣言されたまま残る原因です。

方式向いている対象注意点
HTML の link 要素小規模から中規模のサイト版が多いときのページ重量
HTTP ヘッダーPDF など HTML 以外のファイル大きな集合でのヘッダーサイズ上限
サイトマップの記述大規模サイト、多言語ページ本体との同期を保つこと
HTML の link 要素
<link rel="alternate" hreflang="en" href="https://example.com/guide/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/guide/" />
<link rel="alternate" hreflang="pt-br" href="https://example.com/pt-br/guide/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/guide/" />

この例で英語ページが自分自身を列挙している点に注目してください。これが自己参照であり、その欠落は、ほかの点では丁寧な実装における最も多い欠陥です。冗長に見え、テンプレートを整理する人には間違いのように読めるからです。

コードと、存在しないコード

言語は ISO 639-1 です。その後ろにハイフンと ISO 3166-1 Alpha 2 の地域を続けても構いません。地域だけでは決して有効になりません。何語なのかを言わずに「このページはカナダ向けだ」と言う方法はないのです。

コード判定理由
ja有効言語のみ——日本語、地域は問わない
zh-TW有効台湾向けに書かれた中国語
TW無効言語のない地域
uk有効だが英国ではないuk はウクライナ語。英国は GB
eu地域としては無効EU は国コードではない
en-UK無効英国の国コードは GB

x-default は何のためにあるか

x-default は、列挙しなかった言語を受け止めます。どの版とも言語が一致しない訪問者のための待避先であり、その自然な置き場所は言語選択ページか、訪問者を自分で振り分けるトップページです。

主要な版を指名する手段ではありません。英語が既定に感じられるからと x-default を英語ページに向けることは、一致しなかった日本語話者やトルコ語話者に英語を出すべきだと検索エンジンに告げることです。それが妥当な場合もありますが、習慣ではなく意識的に決めるべき判断です。

hreflang と canonical は別の仕事

この二つは技術的SEOのどの組み合わせよりも混同されやすく、しかも壊れ方が深刻です。canonical は「私の代わりにこの別のURLを索引に入れよ」と言います。hreflang は「この別のURLは、別の読者に向けた同じ内容だ」と言います。

ドイツ語ページの canonical を英語ページに向ければ、ドイツ語ページはそもそも索引に入れるなと検索エンジンに告げたことになります。これは結果からそのページを取り除き、同時にそれを参照していた hreflang の集合を壊します。各ローカライズ版は自分自身を canonical とし、兄弟版は hreflang で示すべきです。

自分のサイトで試す

よくある質問

hreflang は言語間の重複コンテンツを解決しますか。

これはターゲティングの信号であって、重複コンテンツの対処ではありません。翻訳は重複ではなく、hreflang はどの翻訳がどの読者に属するかを検索エンジンに伝えます。

なぜ違う言語版が表示されるのですか。

たいていは相互リンクの集合が不完全か、コードが検証を通らないためです。hreflang は信号なので、信用されない集合は脇に置かれ、検索エンジンは自前の言語判定に戻ります。

全ページが一言語なら hreflang は要りますか。

複数の地域を狙う場合だけです。市場ごとに内容が違う ja-JP と en-US のような組み合わせが該当します。単一の読者に向けた単一言語のサイトには何も要りません。

各ページは自分自身と元の言語、どちらを canonical にすべきですか。

自分自身です。翻訳を元の言語に canonical で寄せると、翻訳を索引に入れるなと告げることになり、結果から消えたうえ、それを指していた hreflang の集合も壊れます。

x-default はどこを指すべきですか。

公開していない言語の訪問者を受け止めるべき先です。多くは言語選択ページか、自分で振り分けるトップページになります。待避先を指名するものであり、主要な版を指名するものではありません。

hreflang はランキング要因ですか。

いいえ。正しい版を正しい読者に届けるためのターゲティング信号です。順位を上げるものではありませんし、Googleが注釈に従わないこともあります。