Back to articles

Wenn Canonical-Tags über Sprachgrenzen hinweg verweisen, brechen Hreflang

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

Eine lokalisierte Seite, deren Canonical auf ihr englisches Gegenstück verweist, hebt ihre eigene Hreflang‑Annotation auf, und kein Browser‑Check kann sie erkennen. Auditedaten zu den Checks, die die Widersprüchlichkeit erkennen, plus der Tag, an dem unsere eigenen 9 Ländercodes einen der Checks fehlgeschlagen haben.

Eine Seite kann 2 Tags im selben <head> that address the same crawler about the same URL and say opposite things. On https://example.com/fr/pricing, dies sagt, dass die Seite der französische Teil eines Clusters ist:

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

Und dies, 1 Zeile darunter, sagt, dass die Seite eine Variante ist, die in das englische Original integriert werden soll:

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

Real‑Sites liefern beide, aus demselben Template, auf jeder lokalen Route, die sie besitzen. Dies ist der Fehler, der nach demjenigen, den wir im Juli dokumentiert haben, bleibt — die fehlende hreflang‑Selbstreferenz, immer noch fehlerhaft 58% von 88 hreflang‑Bewertungen in unseren aktuellen Daten. Eine Site kann diese Schleife schließen, jede Selbstreferenz korrekt setzen und dennoch jede lokale Seite darum bitten, durch ihr englisches Gegenstück ersetzt zu werden.

Ein Cross‑Language‑Canonical fordert Google auf, die lokale URL in das Original zu integrieren

Ein Canonical‑Tag ist eine Konsolidierungsanfrage: Behandle diese URL als Variante von jener, und indexiere jene. Eine Hreflang‑Annotation ist ein Routing‑Anspruch: Diese URL ist die Version für diese Sprache. Leite sie auf unterschiedliche URLs und die Site hat eine Anfrage gestellt, die ihren eigenen Anspruch ungültig macht — der französische Slot im Cluster wird von einer Seite besetzt, die sich selbst ablehnt. Google hat ausdrücklich gesagt, dass hreflang ein Hinweis und keine Anweisung ist, und Canonicalisierung funktioniert auf die gleiche Weise: Die Site liefert Signale, Google löst sie auf. Diese Auflösung ist das ganze Problem. Mit einer selbst‑canonicalisierten lokalen Seite entscheidet der Publisher, welche URL französische Suchende bedient. Mit einem Cross‑Language‑Canonical hat der Publisher die Entscheidung abgegeben, während er glaubt, das Cluster sei konfiguriert — und das Ergebnis, das später gemeldet wird, ist eine lokale Seite, die in ihrem eigenen Markt nirgendwo rankt, während die englische Seite an ihrer Stelle erscheint. Die Generatoren, die dies produzieren, sind gewöhnlich. Ein Canonical‑Helper, der aus einer Routen‑Definition statt aus dem Request‑Pfad gebaut ist, gibt die unpräfixierte URL für jede Locale aus. Ein CMS, dessen hreflang‑Einstellung pro Locale ist, aber dessen Canonical‑Einstellung global ist, tut dasselbe. So führt eine Migration, die Ländervorwahlen zu URLs hinzufügte und den kanonischen Link auf die ursprüngliche Position des Inhalts zeigte. In jedem Fall rendert die Seite einwandfrei, die Annotationen sehen im Quellcode vollständig aus, und die Widersprüche sind 2 Attribute getrennt.

Der Datensatz

hreflang Selbstreferenz vorhandenDie Startseite fehlt in ihren eigenen hreflang-Annotationen58% von 88 Bewertungen; 59% von 34 Seiten
Startseite kanonisch vorhandenDie Startseite deklariert überhaupt keine kanonische URL29% von 49 Seiten

Methodik: neuester abgeschlossener Audit-Snapshot pro Domain, engine-v2 Prüfsatz, ungefähr Mai 23 – August 31, 2026, anonymisiert. Denominator unterscheiden sich je nach Prüfung — 34 zu 49 Seiten — weil eine Prüfung nur ausgeführt wird, wenn ihre Eingaben vorhanden sind: die Selbstreferenzprüfung liefert kein Urteil bei einer Startseite ohne hreflang-Annotationen, weshalb ihr Seitenzähler der kleinere ist. Bewertungs- und Seitenraten unterscheiden sich, weil einige Domains im Zeitraum mehrmals geprüft wurden. Die Stichprobe ist selbstausgewählt — Betreiber, die einen Audit durchgeführt haben — und tendiert zu klein- bis mittelgroßen, daher sollten die Raten als Richtwerte für diesen Segment betrachtet werden. Die zweite Zeile ist das ruhigere Risiko. Eine Seite ohne kanonische URL hat ihre hreflang-Annotation nicht widersprochen, aber sie hat die Annotation auch nicht verteidigt: nichts auf der Seite gibt an, welche URL sie als autoritativ betrachtet, sodass eine Ländervariante, die über mehr als 1 Adresse erreichbar ist, vollständig durch Inferenz gelöst wird. Um einen korrekten Cluster zu erreichen, muss zuerst die kanonische Hygiene erledigt werden, weshalb unser kanonischer Leitfaden die Voraussetzung für die hreflang-Implementierungsanleitung ist und nicht ein Begleitdokument.

Der Widerspruch ist nur von beiden Enden des Clusters sichtbar

Eine einzelne Seite kann diesen Fehlschlag nicht über sich selbst melden. /fr/pricing sieht intern konsistent aus — ein hreflang-Set, eine kanonische URL, beide gut formatiert. Der Fehler tritt auf, wenn man die Annotation und die annotierte Seite nebeneinander betrachtet, weshalb unser Audit den Cluster abruft statt 1 Dokument zu lesen. Jeder Lauf parst die hreflang-Annotationen der Startseite und holt bis zu 12 gleichseitige Ziele daraus, überspringt den Schritt vollständig, wenn die Startseite selbst außerhalb der Domain landet, da diese Annotationen von einer fremden Seite HTML stammten. Für jedes Ziel, das Inhalt zurückliefert, zeichnet die Engine den Statuscode auf, ob die Anfrage umgeleitet wurde, ob eine noindex-Direktive vorhanden ist und ob die eigene kanonische URL des Ziels auf die URL der benannten Annotation verweist. Ein Missverhältnis dort wird als canonical_mismatch aufgezeichnet und schlägt bei einer hochkritischen Prüfung fehl — diese Prüfung ist die plattformübergreifende kanonische Erkennung. URLs werden mit abschließendem Schrägstrich und fallunabhängig normalisiert verglichen, so /fr/pricing und /FR/pricing/ sind 1 Seite, und nichts feiner wird als Unterschied behandelt. Eine zweite Prüfung vergleicht die Sprache, die die Seite in ihrem lang-Attribut deklariert, mit dem Locale, das ihre eigene hreflang-Annotation dafür angibt, auf dem Primär-Subtag, und nur dort, wo irgendeine Seite im Audit hreflang für sich selbst deklariert hat. Eine Seite ohne selbstreferenzielle Annotation irgendwo ist monolingual, soweit der Audit sehen kann, und die Prüfung meldet das anstelle eines Erfolgs. Wenn ein alternativer Link nicht abgerufen werden kann, ist das Urteil unentschieden statt ein Fehlschlag, und der Bericht sagt, wie viele der deklarierten Ziele tatsächlich bewertet wurden. Ein nicht erreichbarer alternativer Link ist eine Lücke im Beweis, und ihn als Defekt zu melden würde einen erfundenen Defekt erzeugen.

graph TD FR["/fr/pricing — html lang=fr"] EN["/pricing — englische Originalversion"] FR -->|"hreflang=fr, self-referencing"| CLAIM["Anspruch: diesen URL für französische Suchmaschinen bereitstellen"] FR -->|"rel=canonical"| EN EN -->|"hreflang=fr"| FR CLAIM --> Q{"Welcher URL beantwortet eine französische Anfrage?"} EN --> Q Q -->|"die Seite hat aufgehört zu entscheiden"| OUT["Google Picks — normalerweise der englische URL"]

Unsere eigenen Locale-Präfixe lieferten Englisch bis August 17, 2026

Diese Prüfungen existieren, weil wir diese Klasse von Defekt auf seoreport.dev fehlgeschlagen haben. Ahrefs Site Audit meldete ein hreflang und HTML lang Missverhältnis über 184 URLs auf unserer eigenen Seite. Das lang-Attribut war das Symptom; der Inhalt war ebenfalls Englisch, auf jedem der 9 Locale-Präfixe, was jede lokalisierte URL zu einer Duplikat ihres englischen Zwillings machte — das gleiche Ergebnis, das ein cross-language canonical erzeugt, erreicht aus der anderen Richtung. Die Ursache war 1 Funktionsgrenze. Die Dokumenten-Shell nahm ihre Sprache von einem Helfer, der die Standardsprache zurückgibt, wann immer window undefiniert ist. Auf dem Server rendert /fr/pricing daher lang="en" und seedet das englische Übersetzungs-Bundle, während die Komponente, die die Head-Links ausgibt — die den Pfad liest, nicht die Laufzeit — einen korrekten fr self-hreflang direkt daneben ausgibt. Ein Client-Effekt wechselte die Sprache nach der Hydration, sodass jede browserbasierte Prüfung bestand und kein Mensch es sah. Crawler führen diesen Effekt nicht aus. Behebt auf August 17, 2026: die Shell ermittelt ihre Sprache aus dem Pfad, das lokalisierte Layout löst das Locale-Bundle in einem Loader auf, sodass Server-Render und Hydration es teilen, und ein unterstütztes Locale ohne Bundle wirft stattdessen, anstatt leise Englisch unter seinem Präfix zu liefern. Die Textausrichtung war ebenfalls falsch — Arabisch hatte ltr geliefert. Das Tor ist ein rohes-HTML Rauchlauf ohne JavaScript, weil ein Browser-Check blind gegenüber dieser gesamten Fehlerklasse ist. Run red-first gegen Produktion meldete 440 Fehler über 128 lokalisierte URLs, jede Seite bei 100% Englisch-Übertrag. Gegen das gefixte Build: 0 Fehler über 144 URLs. Der Vergleich der Engine zwischen Sprache und hreflang wurde separat gebaut, und die erste Seite, die fehlgeschlagen wäre, war unsere.

x-default erbt, was die Fallback-Seite deklariert

Unser Sample an Seiten, die x-default deklarieren, ist zu klein, um eine Fehlerquote zu veröffentlichen, und es gibt einen zweiten Grund, warum wir es nicht bewerten: erfasster HTML beweist, dass eine x-default Annotation deklariert ist, nicht welche Zielgruppe der Publisher beabsichtigte, zu bedienen. Diese Richtigkeitsfrage ist aus dem Dokument nicht entscheidbar, daher meldet der Check, was er kann, und die benachbarten Fakten — URL Form, Zielgesundheit, wechselseitige Annotationen, kanonische Ausrichtung — werden unabhängig voneinander gegen dasselbe Ziel bewertet. Was der Mechanismus impliziert, ist trotzdem erwähnenswert. x-default ist der Fallback für Suchende, deren Sprache die Seite nicht bedient, sodass er normalerweise auf die Seite des Primärmarktes zeigt. Wenn diese Seite einen cross-language kanonischen Link trägt, erbt der Fallback für jeden nicht übereinstimmenden Suchenden auf dem Planeten die Widersprüchlichkeit, und die Prüfung wird sie über die Zielgesundheitsprüfungen melden, anstatt über x-default selbst.

Verifiziere es in rohem HTML, pro Locale, in beide Richtungen

Hole die Seite so, wie ein Crawler es tut, und lese 3 Dinge:

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

Das lang Attribut, der selbstreferenzierende hreflang-Eintrag und der kanonische Link müssen auf 1 Locale und 1 URL übereinstimmen:

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" />

Wiederhole dann auf 1 Seite pro Locale und hole jeden URL der Annotationen, um zu bestätigen, dass jeder selbst kanonisiert. Die Regel ist kurz genug, um sie einem Entwickler zu geben: jedes Mitglied eines hreflang-Clusters kanonisiert sich selbst. Ein cross-language kanonischer Link ist genau in 1 Situation korrekt — wenn der lokalisierte URL überhaupt nicht lokalisiert ist und dieselbe Sprache wie das Original verwendet — und in dieser Situation gehört der URL nicht in den Cluster. Die URL Inspection von Search Console gibt die autoritative zweite Meinung darüber, welcher kanonische Google tatsächlich ausgewählt wurde, pro URL. Unsere Prüfung läuft die Schleife über den Cluster bei jedem Bericht, und der free report listet jedes widersprüchliche Paar mit der Seite, auf der es gefunden wurde. Die 9 Locale-Präfixe auf seoreport.dev bestehen jetzt, und sie bestehen, weil wir den Defekt zuerst ausgeliefert haben, auf einer Seite, deren gesamtes Produkt ihn findet.

Sehen Sie, wie Ihre Seite rankt

Get a free KI-powered SEO report with actionable findings and priority fixes for your website.

Keine Anmeldung erforderlich.