Google über lokalisierte Versionen deiner Seite informieren

Wenn mehrere Versionen einer Seite für verschiedene Sprachen oder Regionen existieren, informiere Google darüber. Dadurch kann die Google Suche die Nutzer zur Version deiner Seite mit der passenden Sprache oder Region führen.

Beachte, dass Google auch dann andere Sprachversionen deiner Seite finden kann, wenn du uns nicht informierst. Das beste Ergebnis wird jedoch in der Regel dann erzielt, wenn du Seiten in bestimmten Sprachen oder für bestimmte Regionen explizit angibst.

Hier einige Beispiele für Situationen, in denen wir empfehlen, alternative Seiten anzugeben:

  • Du belässt die wesentlichen Inhalte in einer einzigen Sprache und übersetzt nur die Seitenvorlage, z. B. Navigation und Fußzeile. Das ist in der Regel bei Seiten mit von Nutzern erstellten Inhalten der Fall, etwa Foren.
  • Deine Inhalte sind im Wesentlichen in einer einzigen Sprache verfasst und einander ähnlich, dabei gibt es geringfügige regionale Abweichungen. Ein Beispiel hierfür wäre, wenn du englischsprachige Inhalte speziell für das Vereinigte Königreich, Irland und die USA hast.
  • Die Inhalte deiner Website sind vollständig in mehrere Sprachen übersetzt. Das wäre zum Beispiel der Fall, wenn du eine deutsche und eine englische Version von jeder Seite hast.

Lokalisierte Versionen einer Seite gelten nur dann als Duplikate, wenn der Hauptinhalt der Seite nicht übersetzt wurde.

Methoden zum Angeben deiner alternativen Seiten

Es gibt drei Möglichkeiten, bei Google mehrere Sprach- oder Länderversionen einer Seite anzugeben:

Die drei Methoden entsprechen der Perspektive von Google und du kannst die Methode auswählen, die für deine Website am besten geeignet ist. Du kannst zwar alle drei Methoden gleichzeitig verwenden, das hat aber keinen Vorteil in der Suche. Tatsächlich ist es eher schwieriger, drei Implementierungen zu verwalten, anstatt nur eine auszuwählen.

Mithilfe von hreflang kannst du Google über Inhaltsvarianten informieren, damit wir erkennen können, dass es sich bei diesen Seiten um lokalisierte Varianten derselben Inhalte handelt. Google verwendet hreflang oder das HTML-Attribut lang nicht, um die Sprache einer Seite zu erkennen. Stattdessen nutzen wir dafür Algorithmen.

Richtlinien für alle Methoden

  • In jeder Sprachversion müssen die Version selbst und alle anderen Sprachversionen aufgelistet sein.
  • Alternative URLs müssen voll qualifiziert sein, wobei die Transportmethode (http oder https) genannt werden muss, also:
    https://example.com/foo, nicht //example.com/foo oder /foo
  • Alternative URLs müssen sich nicht in derselben Domain befinden.
  • Wenn mehrere alternative URLs auf Nutzer mit derselben Sprache, aber in unterschiedlichen Ländern ausgerichtet sind, empfiehlt es sich, auch eine Catchall-URL für geografisch nicht spezifizierte Nutzer dieser Sprache bereitzustellen. Hast du zum Beispiel spezifische URLs für englischsprachige Nutzer in Irland (en-ie), Kanada (en-ca) und Australien (en-au), solltest du auch eine allgemeine englischsprachige Seite (en) anbieten, die für Nutzer im Vereinigten Königreich, in den USA und in allen anderen englischsprachigen Ländern gleichermaßen geeignet ist. Dafür kannst du auch eine der spezifischen Seiten auswählen.
  • Wenn zwei Seiten nicht aufeinander verweisen, werden die Tags ignoriert. Dadurch wird verhindert, dass jemand auf einer anderen Website willkürlich ein Tag erstellt und die Seite als alternative Version einer deiner Seiten markiert.
  • Wenn es sich schwierig gestaltet, für jede Sprache eine Gruppe bidirektionaler Links zu pflegen, kannst du auf einigen Seiten ein paar Sprachen auslassen. Google wird die Links, die aufeinander verweisen, weiterhin verarbeiten. Neue Sprachversionen sollten jedoch unbedingt auf die ursprüngliche(n) Sprache(n) bzw. Hauptsprache(n) verweisen und umgekehrt. Beispiel: Deine Website wurde ursprünglich auf Französisch veröffentlicht, die Endung der URLs ist .fr und du möchtest nun neue Sprachversionen für Mexiko (.mx) und Spanien (.es) implementieren. In diesem Fall ist es wichtiger, dass die neuen Sprachversionen (.mx und .es) bidirektional auf die .fr-Version verweisen, als die neuen spanischen Versionen aufeinander verweisen zu lassen.
  • Du kannst für nicht zugeordnete Sprachen eine Seite hinzufügen, auf der Nutzer sozusagen aufgefangen werden. Das ist insbesondere auf Seiten mit einer Auswahlmöglichkeit für Länder oder Sprachen oder auf automatisch weiterleitenden Startseiten nützlich. Verwende den Wert x-default:
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

HTML-Tags

Füge dem Header deiner Seite <link rel="alternate" hreflang="lang_code"... >-Elemente hinzu. Dadurch wird Google über alle Sprach-/Regionsversionen einer Seite informiert. Das ist nützlich, wenn du keine Sitemap hast oder keine HTTP-Antwortheader für deine Website angeben kannst.

Füge für jede Variante der Seite eine Gruppe von <link>-Elementen im <head>-Element hinzu, d. h. einen Link für jede Seitenvariante, einschließlich der Seite selbst. Die Gruppe von Links ist für jede Version der Seite identisch. Hier findest du weitere Richtlinien.

Die Syntax eines einzelnen link-Elements sieht so aus:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Syntax
lang_code Ein unterstützter Sprach- oder Regionscode für die Sprache/Region, auf die diese Version der Seite ausgerichtet ist, oder x-default für alle Sprachen, die nicht explizit in einem hreflang-Tag auf der Seite aufgelistet sind
url_of_page Die voll qualifizierte URL für die Version dieser Seite für die angegebene Sprache bzw. Region

Setze deine <link> Tags möglichst weit oben ins <head>-Element. Die <link>-Tags müssen sich vor allen Elementen befinden, die ein vorzeitiges Schließen des <head>-Elements mit sich bringen, z. B. <p> oder ein Tracking-Pixel, mindestens aber im richtig formatierten <head>-Bereich. Füge im Zweifelsfall Code von deiner gerenderten Seite in einen HTML-Validator ein, um sicherzustellen, dass sich die Links innerhalb des <head>-Elements befinden.

Beispiel

Example Widgets Inc. betreibt eine Website für Nutzer in den USA, im Vereinigten Königreich und Deutschland. Die folgenden URLs liefern im Wesentlichen die gleichen Inhalte, allerdings mit regionalen Abweichungen:

URLs mit regionalen Varianten
https://en.example.com/page.html Allgemeine englischsprachige Startseite mit Informationen über Gebühren für den internationalen Versand aus den USA
https://en-gb.example.com/page.html Britische Startseite, auf der Preise in britischen Pfund angezeigt werden
https://en-us.example.com/page.html Startseite für die USA, auf der Preise in US-Dollar angezeigt werden
https://de.example.com/page.html Deutsche Sprachversion der Startseite
https://www.example.com/ Standardseite, die auf keine bestimmte Sprache und kein bestimmtes Land ausgerichtet ist und auf der die Nutzer ihre Sprache und ihr Land auswählen können

Beachte, dass die sprachspezifischen Subdomains in diesen URLs (en, en-gb, en-us, de) nicht von Google verwendet werden, um die Zielgruppe für die Seite zu bestimmen. Die Zuordnung zu den Zielgruppen musst du selbst vornehmen.

Unten siehst du den HTML-Code, der im <head>-Bereich aller in der Tabelle URLs mit regionalen Varianten aufgelisteten Seiten eingefügt werden sollte. Dadurch werden deutschsprachige Nutzer, englischsprachige Nutzer aus den USA und dem Vereinigten Königreich sowie allgemein englischsprachige Nutzer auf die lokalisierten Seiten weitergeleitet. Alle anderen Nutzer werden zu einer allgemeinen Startseite weitergeleitet. Die Google Suche gibt das entsprechende Ergebnis für den Nutzer gemäß den Browsereinstellungen zurück.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://www.example.com/" />
</head>

HTTP-Header

Du kannst einen HTTP-Header mit der GET-Antwort deiner Seite zurückgeben, um Google über alle Sprach- und Regionsvarianten einer Seite zu informieren. Dies ist nützlich für Nicht-HTML-Dateien wie PDFs.

So sieht das Format des Headers aus:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Syntax
<url_x> Die voll qualifizierte URL für die alternative Seite, die dem String für die Sprache entspricht, die mit dem Attribut hreflang verknüpft ist. Die URL muss in spitze Klammern < und > eingeschlossen sein. Beispiel: <https://www.google.com>
lang_code_x Ein unterstützter Sprach- oder Regionscode für die Sprache/Region, auf die diese Version der Seite ausgerichtet ist, oder x-default für alle Sprachen, die nicht explizit in einem hreflang-Tag auf der Seite aufgelistet sind

Du musst für jede Version der Seite, einschließlich der angeforderten Version, eine Gruppe von durch Kommas voneinander getrennten <url>-, rel="alternate"- und hreflang-Werten wie im folgenden Beispiel angeben. Der für jede Version einer Seite ausgegebene Link:-Header ist identisch. Hier findest du weitere Richtlinien.

Beispiel

Das ist ein Beispiel für einen Link:-Header, der von einer Website mit drei Versionen einer PDF-Datei ausgegeben wurde: eine für englischsprachige Nutzer, eine für deutschsprachige Nutzer aus der Schweiz und eine für alle anderen deutschsprachigen Nutzer:

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sitemap

Mithilfe einer XML-Sitemap kannst du Google über alle Sprach- und Regionsvarianten einer URL informieren. Füge dazu ein <loc>-Element hinzu, in dem eine einzelne URL mit untergeordneten <xhtml:link>-Einträgen für jede Sprach- und Ländervariante der Seite, einschließlich der Seite selbst, aufgeführt ist. Wenn du also drei Versionen einer Seite hast, enthält deine Sitemap Einträge für die URLs der einzelnen Versionen und jeder Eintrag hat drei identische untergeordnete Einträge.

Sitemap-Regeln:

  • Gib den XHTML-Namespace so an:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Erstelle wie bei jeder anderen Sitemap ein separates <url>-Element für jede URL.
  • Jedes <url>-Element muss ein untergeordnetes <loc>-Element haben, das die Seiten-URL angibt.
  • Jedes <url>-Element muss ein untergeordnetes Element <xhtml:link rel="alternate" hreflang="supported_language-code"> haben, in dem jede alternative Version der Seite, einschließlich der Seite selbst, aufgelistet ist. Die Reihenfolge dieser untergeordneten <xhtml:link>-Elemente spielt keine Rolle. Es ist allerdings sinnvoll, bei den Elementen dieselbe Reihenfolge einzuhalten, weil du sie so besser auf Fehler prüfen kannst. Untergeordnete Elemente werden nicht auf das URL-Limit für Sitemaps angerechnet.
  • Lade die Sitemap in ein Verzeichnis auf der Website hoch, für die sie gilt. Eine Sitemap darf nur untergeordnete URLs des Verzeichnisses enthalten, aus dem die Sitemap gehostet wird.
  • Unsere Dokumentation zu Sitemaps gilt auch für Sitemap-Erweiterungen. Beachte die allgemeinen Richtlinien für Sitemaps.
  • Hier findest du weitere Richtlinien.

Beispiel

Das ist eine englischsprachige Seite, die an englischsprachige Nutzer weltweit gerichtet ist, sowie eine äquivalente Version der Seite, die an deutschsprachige Nutzer weltweit gerichtet ist, und eine deutschsprachige Version, die an deutschsprachige Nutzer in der Schweiz gerichtet ist. Hier siehst du alle auf deiner Website vorhandenen URLs:

  • www.example.com/english/page.html ist auf englischsprachige Nutzer ausgerichtet.
  • www.example.de/deutsch/page.html ist auf deutschsprachige Nutzer ausgerichtet.
  • www.example.de/schweiz-deutsch/page.html ist auf deutschsprachige Nutzer in der Schweiz ausgerichtet.

Dies ist die Sitemap für diese drei Seiten:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

Unterstützte Sprach- und Regionscodes

Der Wert des Attributs hreflang besteht aus einem oder optional zwei Werten, die durch einen Bindestrich getrennt sind. Beispiel: en-US. Der erste Code des hreflang-Attributs ist der Sprachcode (im Format ISO 639-1), gefolgt von einem optionalen zweiten Code als Regionscode (im Format ISO 3166-1 Alpha 2) einer alternativen URL.

Für die Ausrichtung auf unterschiedliche Sprachen in Belgien kannst du die folgenden Sprach- und Regionscodes verwenden:

  • Gut (Deutsch für Nutzer in Belgien): de-be
  • Gut (Niederländisch für Nutzer in Belgien): nl-be
  • Gut (Französisch für Nutzer in Belgien): fr-be
  • Schlecht, weil der erste Code für die Sprache ist (be ist der belarussische Sprachcode): be

Sprachcodes dagegen lassen sich auch allein angeben, um die Tag-Kennzeichnung zu vereinfachen. Beispiel:

  • de: deutschsprachige Inhalte, unabhängig von der Region
  • en-GB: englischsprachige Inhalte für Nutzer im Vereinigten Königreich
  • de-ES: deutschsprachige Inhalte für Nutzer in Spanien

Bei unterschiedlichen Schriftsystemen leitet sich das korrekte Schriftsystem vom Land ab. Wenn du zum Beispiel zh-TW für Nutzer in Taiwan verwendest, wird daraus automatisch das Schriftsystem „Chinesisch (traditionell)“ abgeleitet. Du kannst das Schriftsystem auch explizit durch Verwendung von ISO 15924 festlegen. Das sieht dann so aus:

  • zh-Hant: Chinesisch (traditionell)
  • zh-Hans: Chinesisch (vereinfacht)

Wie bei anderen Sprachcodes auch kannst du auch eine optionale Region angeben. Verwende beispielsweise zh-Hans-US, um „Chinesisch (vereinfacht)“ für Nutzer in den USA festzulegen.

Den Wert x-default für nicht übereinstimmende Sprachen verwenden

Der reservierte Wert x-default wird verwendet, wenn keine andere Sprache oder Region mit der Browsereinstellung des Nutzers übereinstimmt. Dieser Wert wird empfohlen, um die Fallback-Seite für Nutzer anzugeben, deren Spracheinstellungen mit keiner der lokalisierten Versionen deiner Website übereinstimmen. Der x-default-Wert kann zwar für jede Seite verwendet werden, allerdings ist er für Seiten zur Sprachauswahl vorgesehen und funktioniert deshalb dort am besten.

Für den Wert x-default muss kein Sprachcode angegeben werden. Die Seite ist auf Nutzer ausgerichtet, für deren Spracheinstellungen es auf deiner Website keine Übereinstimmungen gibt. Daher ist die Sprache der Seite irrelevant.

Wenn du die Annotation hreflang="x-default" implementieren möchtest, füge den vorhandenen hreflang-Annotationen ein zusätzliches link-Tag hinzu und setze das Attribut href auf die URL, zu der deine Nutzer geleitet werden sollen, wenn deine Website ihre Sprache nicht unterstützt. Eine HTML-Implementierung könnte beispielsweise so aussehen:

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Fehlerbehebung

Häufige Fehler

Dies sind die häufigsten Fehler bei der Verwendung von hreflang:

  • Fehlende zurückverweisende Links: Wenn Seite X auf Seite Y verweist, muss Seite Y zurück auf Seite X verweisen. Falls dies nicht für alle Seiten mit hreflang-Attribut der Fall ist, werden die Attribute möglicherweise ignoriert oder nicht richtig interpretiert. Nehmen wir als Beispiel diesen Link zu https://de.example.com/index.html:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    Du benötigst außerdem einen hreflang-Link unter https://en-gb.example.com/index.html, der auf die de-Version des Inhalts
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
    zurückverweist
  • Falsche Sprachcodes: Achte darauf, dass durch alle verwendeten Sprachcodes die Sprache einer alternativen URL im Format ISO 639-1 und optional auch die Region im Format ISO 3166-1 Alpha 2 festgelegt wird. Die Angabe der Region allein ist ungültig.

hreflang-Fehler beheben

Es sind viele Tools von Drittanbietern verfügbar, mit denen du hreflang-Annotationen debuggen kannst. Hier sind ein paar beliebte Tools, die jedoch nicht von Google gepflegt oder geprüft werden: