Pokud máte několik verzí stránky pro různé jazyky nebo oblasti, můžete o nich vyhledávače informovat pomocí značky hreflang.
Vyhledávač tak bude moci snáze uživatele směrovat na vhodnou verzi stránky podle jazyka nebo oblasti.
Google může alternativní verze stránky najít, i když k tomu nepodniknete žádné kroky. Obvykle je však lepší, když své stránky pro konkrétní jazyky nebo oblasti explicitně určíte.
Příklady situací, v nichž alternativní stránky doporučujeme určit:
- Hlavní obsah stránky je ponechán v jednom jazyce a přeložena je pouze šablona stránky, například navigace a zápatí. Tato praxe je běžná u stránek s obsahem vytvářeným uživateli, jako jsou například fóra.
- Jedná se o podobný obsah v jednom jazyce, který se pro jednotlivé oblasti drobně liší. Obsah můžete mít například v angličtině a cílit na uživatele v USA, Velké Británii a Irsku.
- Obsah webu je plně přeložen do několika jazyků. Máte například německou a anglickou verzi každé stránky.
Lokalizované verze stránky se považují za duplikáty pouze v případě, že hlavní obsah stránky zůstává nepřeložený.
Metody určení alternativních stránek
O jazykových či regionálních verzích stránky lze Google informovat třemi způsoby:
Značky HTML
Přidejte do záhlaví stránky HTML prvky
<link rel="alternate" hreflang="lang_code"... >
pomocí nichž Google informujete o všech jazykových a regionálních variantách stránky.
Tato metoda je užitečná, pokud nemáte soubor Sitemap nebo pro svůj web nemůžete zadávat záhlaví odpovědí HTTP.
Každá varianta stránky by v prvku <head> měla obsahovat sadu prvků <link> (jeden pro každou variantu stránky včetně ní samé). Sada odkazů <link> je pro každou verzi stránky identická.
Syntaxe každého kódu je tedy:
<link rel="alternate" hreflang="lang_code" href="url_of_page"
/>
lang_code
Podporovaný kód jazyka nebo oblasti, na který tato verze stránky cílí, případně x-default pro všechny jazyky, které nejsou explicitně uvedeny v žádné značce hreflang na stránce.
url_of_page
Plně kvalifikovaná adresa URL verze této stránky pro zadaný jazyk nebo region.
Značky <link> umístěte do horní části prvku <head>. Značky <link> musejí být přinejmenším ve správně naformátované sekci <head> nebo před jakýmikoliv položkami, které by mohly způsobit předčasné uzavření sekce <head>, jako jsou například značky <p> nebo měřicí pixely. Pokud si nejste jistí, vložte kód z vykreslené stránky do validátoru HTML a zkontrolujte, zda jsou prvky <link> v prvku <head>.
Příklad použití značek HTML
Společnost Example Widgets, Inc má web, který slouží uživatelům v USA, Velké Británii a Německu. Obsah na následujících adresách URL je v zásadě stejný, jen s drobnými rozdíly pro jednotlivé oblasti:
http://en.example.com/page.html – Generická domovská stránka v angličtině s informacemi o poplatcích za dodávky z USA do jiných zemí.
http://en-gb.example.com/page.html – Domovská stránka pro Velkou Británii s cenami v librách.
http://en-us.example.com/page.html – Domovská stránka pro USA s cenami v dolarech.
http://de.example.com/page.html – Domovská stránka v němčině.
http://www.example.com/ – Výchozí stránka, která není zacílena na žádný jazyk ani oblast. Na této stránce je nabídka pro výběr požadovaného jazyka a oblasti.
Zde je kód HTML, který je třeba vložit do sekce <head> všech výše uvedených stránek. Uživatele v USA či Spojeném království a obecně uživatele mluvící anglicky či německy přesměruje na lokalizované stránky a všechny ostatní uživatele na generickou domovskou stránku. Vyhledávání Google uživateli vrátí vhodný výsledek podle jeho nastavení prohlížeče.
<head>
<title>Widgets, Inc</title>
<link rel="alternate" hreflang="en-gb"
href="http://en-gb.example.com/page.html" />
<link rel="alternate" hreflang="en-us"
href="http://en-us.example.com/page.html" />
<link rel="alternate" hreflang="en"
href="http://en.example.com/page.html" />
<link rel="alternate" hreflang="de"
href="http://de.example.com/page.html" />
<link rel="alternate" hreflang="x-default"
href="http://www.example.com/" />
</head>
Záhlaví HTTP
V odpovědi na požadavek GET k načtení stránky můžete vracet záhlaví HTTP, v němž Google budete informovat o všech jazykových a regionálních variantách stránky. Tato metoda je užitečná pro soubory jiného typu než HTML (například PDF).
Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>;
rel="alternate"; hreflang="lang_code_2", ...
Zde je příklad záhlaví Link:, které vrací web se třemi verzemi souboru PDF: jednou pro uživatele mluvící angličtinou, jednou pro německy mluvící uživatele ze Švýcarska a jednou pro všechny ostatní německy mluvící uživatele:
Link: <http://example.com/file.pdf>; rel="alternate";
hreflang="en",
<http://de-ch.example.com/file.pdf>; rel="alternate";
hreflang="de-ch",
<http://de.example.com/file.pdf>; rel="alternate";
hreflang="de"
Soubor Sitemap
O všech jazykových a regionálních variantách adres URL můžete Google informovat pomocí souboru Sitemap.
Provedete to přidáním prvku <loc> pro jednu adresu URL s podřízenými položkami <xhtml:link> pro každou jazykovou nebo regionální verzi stránky včetně ní samé. Pokud tedy máte tři verze stránky, bude soubor Sitemap obsahovat tři položky a každá z nich bude mít tři identické podřízené položky.
Pravidla pro soubory Sitemap:
- Takto zadejte jmenný prostor xhtml:.
xmlns:xhtml="http://www.w3.org/1999/xhtml"
- Pro každou adresu URL vytvořte samostatný prvek url.
- Každý prvek <url> musí obsahovat podřízený prvek <loc> s adresou URL stránky.
- Každý prvek <url> musí mít podřízený prvek,
<xhtml:link rel="alternate" hreflang="supported_language-
code">
v němž budou uvedeny všechny alternativní verze stránky, včetně stránky samotné. Na pořadí těchto prvků <xhtml:link> nezáleží. Je však vhodné uvádět je všude ve stejném pořadí, abyste v nich snáze odhalili případné omyly.
Příklad použití v Sitemapě
Zde je stránka v angličtině určená pro anglicky mluvící uživatele po celém světě s ekvivalentními verzemi zacílenými na německy mluvící uživatele po celém světě a německy mluvící uživatele ve Švýcarsku. Zde jsou všechny adresy URL přítomné na vašem webu:
- www.example.com/english/page.html – cílí na anglicky mluvící uživatele,
- www.example.com/deutsch/page.html – cílí na německy mluvící uživatele,
- www.example.com/schweiz-deutsch/page.html – cílí na německy mluvící uživatele ve Švýcarsku.
Zde je soubor Sitemap pro tyto tři stránky:
<?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>http://www.example.com/english/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-
deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/page.html"/>
</url>
<url>
<loc>http://www.example.com/deutsch/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-
deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/page.html"/>
</url>
<url>
<loc>http://www.example.com/schweiz-
deutsch/page.html</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-
deutsch/page.html"/>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/page.html"/>
</url>
</urlset>
Nejčastější chyby při implementaci hreflang
Chybějící zpětné odkazy: Pokud stránka X odkazuje na stránku Y, musí stránka Y odkazovat zpět na stránku X. Pokud tato podmínka u některé ze stránek, které používají anotace hreflang, není splněna, mohou být anotace ignorovány nebo nemusejí být interpretovány správně.
Nesprávné kódy jazyka: Zajistěte, aby všechny kódy jazyka identifikovaly jazyk (ve formátu ISO 639-1) a volitelně také oblast (ve formátu ISO 3166-1 Alpha 2) alternativní adresy URL. Hodnota, která obsahuje pouze oblast, není platná.
Pro ověření vašich značek můžete použít validátor hreflang
https://hreflang.ninja/