Back to articles

言語をまたぐ正規タグがあると、Hreflang が壊れる

SEOReport Team·
hreflangcanonical-tagsinternational-seomultilingual-seotechnical-seo

正規タグが英語版を指すローカライズされたページは、自身の hreflang アノテーションをキャンセルし、ブラウザのチェックでは検出できません。矛盾を検出するチェックの監査データと、私たち自身の 9 ロケール接頭辞がそれらのうちの一つに失敗した日付.

ページは同じ に 2 タグを持つことができます<head> that address the same crawler about the same URL and say opposite things. On https://example.com/fr/pricing, この文はページがクラスタのフランス語メンバーであることを示しています:

html
<link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing" />

そしてこれ、下の 1 行は、そのページが英語版に統合されるべきバリアントであることを示します:

html
<link rel="canonical" href="https://example.com/pricing" />

実際のサイトは、所有するすべてのローカライズルートで同じテンプレートから両方を提供します. これは、7 月に文書化した失敗 ― hreflang 自己参照の欠落 ― の後に残る失敗で、現在のデータで 58% の 88 hreflang 評価が失敗しています. サイトはそのループを閉じ、すべての自己参照を正しく設定し、各ローカライズページが英語版に置き換えられるように要求することもできます.

言語をまたぐ正規タグは、ローカライズされた URL を元に統合するよう Google に要求します

正規タグは統合要求です:この URL をその一つのバリアントとして扱い、その一つをインデックスします hreflang アノテーションはルーティング主張です:この URL はその言語版です 異なる URL を指し示すと、サイトは自身の主張を無効にするリクエストを発行します ― クラスター内のフランス語スロットは、自身を否定するページで埋められます. Google は hreflang が指示ではなくヒントであることを明示しており、正規化も同様に機能します:サイトはシグナルを提供し、Google がそれらを解決します その解決が問題全体です. 自己正規化されたローカライズページでは、パブリッシャーがフランス語検索者にどの URL を提供するか決定します 言語をまたぐ正規タグでは、パブリッシャーは決定を委ね、クラスターが設定されていると信じます ― 後で報告される結果は、ローカル市場で順位が付かないローカライズページで、英語ページがその場所に表示されるものです. これを生成するものは普通です. ルート定義から構築された正規ヘルパーは、リクエストパスではなく、すべてのロケールに対してプレフィックスなしの URL を発行します hreflang 設定がロケールごとだが、正規設定がグローバルな CMS は同じことをします. したがって、URL にロケールプレフィックスを追加し、コンテンツが元々存在した場所を指すカノニカルを残したマイグレーションです. それぞれの場合、ページは完璧にレンダリングされ、注釈は view-source で完全に見え、矛盾は 2 属性の違いに過ぎません.

データセット

hreflang 自己参照が存在ホームページは自分自身の hreflang 注釈から除外されています58% の 88 評価; 59% の 34 サイト
ホームページのカノニカルが存在ホームページは全くカノニカル URL を宣言していません29% の 49 サイト

方法論: 各ドメインごとの最新完了監査スナップショット、engine-v2 チェックセット、約 5 月 23 – August 31, 2026、匿名化済み。 分母はチェックごとに異なります — 34 から 49 サイト — これはチェックが入力が存在する場合にのみ実行されるためです: 自己参照チェックは hreflang 注釈がまったくないホームページに対して判定を出さず、したがってそのサイト数は少なくなります。 評価レベルとサイトレベルの率は、ウィンドウ内で同一ドメインが複数回監査されたために異なります。 サンプルは自己選択であり、監査を実施した所有者が対象で、小規模〜中規模に偏っています。そのため、率はそのセグメントの方向性として扱ってください。 2 行目はより静かなリスクです. カノニカルがないページは hreflang 注釈と矛盾していませんが、注釈を擁護しているとも言えません: ページ内にどの URL を権威とみなすかを示すものはなく、1 つ以上のアドレスで到達可能なロケールバリアントは推論によって完全に解決されます。 正しいクラスターに到達するには、まずカノニカル・ハイジーンを通過する必要があります。これが理由で、私たちのカノニカルガイドそのhreflang実装ガイドの前提条件であり、単なる補完ではありません.

矛盾はクラスターの両端からのみ可視化されます

単一ページは自分自身についてこの失敗を報告できません. /fr/pricing は内部的に一貫しています — hreflang セット、カノニカル、両方とも正しく形成されています。 欠陥は注釈と注釈対象ページを並べて表示したときに現れます。これが、監査がドキュメント 1 を読むのではなくクラスターを取得する理由です. 各実行はホームページの hreflang 注釈を解析し、そこから最大 12 の同一サイトターゲットを取得します。ホームページ自体がドメイン外にある場合はそのステップを完全にスキップします。なぜなら、これらの注釈は外国サイトの HTML から来ているからです。各ターゲットがコンテンツを返すと、エンジンはステータスコード、リダイレクトの有無、noindex ディレクティブの有無、そしてターゲット自身のカノニカルが注釈で指定された URL に解決されるかを記録します。 そこで不一致が記録されると、canonical_mismatch として記録され、高度な重大度チェックに失敗します — そのチェックはクロス言語カノニカルキャッチです。 URLs は末尾スラッシュと大文字小文字を正規化して比較されるため、/fr/pricing/FR/pricing/ は 1 ページとみなされ、より細かい違いは差異として扱われない。 2 回目のチェックでは、ページが lang 属性で宣言した言語と、ページ自身が主サブタグで主張する hreflang アノテーションのロケールを比較し、監査で hreflang が宣言されたページがある場合にのみ実施される。 どこにも自己参照アノテーションがないサイトは、監査が確認できる範囲では単一言語とみなされ、チェックは合格ではなくその旨を報告する. 代替が取得できない場合、判定は失敗ではなく不確定とし、報告では実際に評価された宣言済みターゲット数を示す. 到達不能な代替は証拠のギャップであり、欠陥として報告するのは発明になる.

graph TD FR["/fr/pricing — html lang=fr"] EN["/pricing — English original"] FR -->|"hreflang=fr, self-referencing"| CLAIM["主張: この URL をフランス語検索者に提供する"] FR -->|"rel=canonical"| EN EN -->|"hreflang=fr"| FR CLAIM --> Q{"Which URL answers a French query?"} EN --> Q Q -->|"the site stopped deciding"| OUT["Google ピック — 通常は英語のURL"]

Our own locale prefixes served English until August 17, 2026

これらのチェックは、seoreport.devでこの種の欠陥に失敗したために存在します。 Ahrefs Site Audit は、当社のサイトの184件のURLで hreflang と HTML lang の不一致を報告しました。 lang 属性は症状でした;コンテンツも英語でした、9つのロケールプレフィックスのすべてで、各ローカライズされた URL が英語の対になるものの複製になりました — クロス言語のカノニカルが生成する同じ結果、他方の方向から到達したもの。 原因は1関数境界でした. ドキュメントシェルは、window が未定義の場合にデフォルト言語を返すヘルパーから言語を取得しました。 サーバー上で、/fr/pricing はしたがって lang="en" をレンダリングし、英語の翻訳バンドルをシードし、ヘッドリンクを発行するコンポーネントは、パスを読み取り、ランタイムではなく、正しい fr self-hreflang をそれの横に直接発行しました。 クライアント効果が水和後に言語を切り替えたため、すべてのブラウザベースのチェックが通過し、人間はそれを見なかった. クローラーはその効果を実行しません. August 17, 2026で固定: シェルはパスから言語を取得し、ローカライズされたレイアウトがロケールバンドルをローダーで解決するため、サーバー側のレンダリングとハイドレーションが共有し、バンドルのないサポートされたロケールは静かに英語を提供する代わりに例外を投げます. テキスト方向が間違っていた — Arabic は ltr を提供していた。 ゲートは生のHTMLスモークランで、JavaScriptがなく、ブラウザチェックはこの全体的な失敗クラスを盲目的に検出しません。 本番環境で赤優先で実行すると、440 が 128 のローカライズされた URL で報告され、すべてのページが 100% 英語の継承を持ちます. 修正ビルドでは:0 が 144 の URL で報告されます. エンジンの言語対 hreflang 比較は別途構築され、最初に失敗したサイトは私たちのものでした.

x-default はフォールバックページが宣言するものを継承します

x-default を宣言するサイトのサンプルは失敗率を公開するには小さすぎ、さらにスコアしない第二の理由があります:キャプチャされた HTML は x-default アノテーションが宣言されていることを証明しますが、出版社が意図した対象読者は示されません。 この正確性の質問は文書から決定できないため、チェックは可能なものを報告し、隣接する事実―URL 形状、ターゲットヘルス、相互アノテーション、正規化の整合性―は同じターゲットに対して独立して評価されます。 メカニズムが示すことは、いずれにせよ述べる価値があります. x-default は、サイトが提供しない言語を検索する検索者のフォールバックであり、通常は主要市場のページを指します。 そのページがクロス言語の正規化を持つ場合、惑星上のすべての未一致検索者のフォールバックは矛盾を継承し、監査はそれをターゲットヘルスチェックを通じて報告し、x-default 自体では報告しません。

生の HTML で、ロケールごとに、両方向で確認してください

クローラが行うようにページを取得し、3 を読み取ります:

curl -s -A "Googlebot" https://example.com/fr/pricing | grep -iE '<html|rel="canonical"|hreflang'

lang 属性、自己参照 hreflang エントリ、および正規化は、1 つのロケールと 1 URL で一致する必要があります:

html
<!-- On https://example.com/fr/pricing -->
<html lang="fr">
<link rel="canonical" href="https://example.com/fr/pricing" />
<link rel="alternate" hreflang="en" href="https://example.com/pricing" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />

その後、ロケールごとに 1 ページで繰り返し、アノテーションが名前付けするすべての URL を取得して、各自が自分自身に正規化されることを確認します。 ルールは開発者に渡すには短すぎます:hreflang クラスターのすべてのメンバーは自分自身に正規化されます. クロス言語のカノニカルは、正確に1つの状況で正しいです — ローカライズされたURLが全くローカライズされておらず、元の言語と同じ言語である場合 — そしてその状況ではURLもクラスターに属しません。 Search Console の URL 検査は、どの正規化 Google が実際に選択されたかについて、URL ごとに権威ある第二の意見を提供します。私たちの監査は、レポートごとにクラスター全体でループを実行し、free report は見つかったページとともに各矛盾ペアをリストします。 seoreport.dev 上の 9 ロケールプレフィックスは現在通過し、私たちが欠陥を最初に出荷したサイトで通過したためです、そのサイトの全製品がそれを発見しています.

サイトのランキングを確認する

アクション可能な発見と優先修正を含む無料のAI搭載SEOレポートを取得

サインアップ不要.