Nedávno jsem dělal na webu, který měl v hreflangu neexistující kód. Nebyl to překlep v jedné šabloně. Někdo si vymyslel kód pro jeden trh a ten pak seděl v headu každé stránky na webu.
Jedna verze přestala být alternativou a stala se konkurentem. Zaindexovala se vedle ostatních. Pozice ve vyhledávání mezi nimi přeskakovaly týden co týden.
Klient si myslel, že má problém s obsahem. Měl dvoupísmenný problém.
Neplatný kód selže potichu
Google narazí na kód, který ve standardu není, tu část anotace ignoruje a jede dál. Žádné varování. Nikde ani řádek.
Ostatní kódy fungují dál. Právě proto se to tak snadno přehlédne. Rozbitý kód visí v headu každé stránky, protože každá stránka vypisuje všechny alternativní verze, ale vypadne z nich jenom jedna.
Ta verze je teď osiřelá. Není alternativou k žádné jiné. Je to jen další skoro identická stránka na stejné doméně a nic nevysvětluje, jak souvisí s ostatními.
A tak soupeří. S verzemi, se kterými měla být spárovaná. Rozbitý hreflang není neutrální – a přesně to klienti nečekají.
Tenhle problém vídám často. en-uk místo en-gb. cz místo cs u češtiny. eu pro „Evropu“, což není země ani náhodou. Jenom kód země tam, kam patří jazyk. Někdo si vymyslí něco, co člověku zní rozumně a parseru neříká nic.
Někde se dočtete, že si to Google zčásti opraví sám. Ta rada je stará. Aktuální dokumentace uvádí UK, UN a EU mezi rezervovanými kódy a rovnou dodává, že jejich použití v hreflangu nemá na Vyhledávání žádný vliv. Regiony Google stejně nikdy nepodporoval. Jeho infrastruktura rozumí zemím, ne regionům.
Tenhle typ problému dokáže snadno potopit jakýkoli web, který prodává na víc trzích.
Hreflang nikdy nebyl příkaz
Sám Google to v dokumentaci popisuje jako způsob, jak pozná, že jde o lokalizované verze téže stránky. Ne jako pokyn, kterým se musí řídit. A řekl to natvrdo: hreflang nezaručuje indexaci, a pokud jsou dvě verze stejné, jednu z nich vybere jako kanonickou.
Funguje to tak záměrně.
Hreflang je jen jeden ze signálů a rozhodující je výběr kanonické stránky. Když canonical ukazuje mimo vaši sadu hreflangů, Google celou anotaci ignoruje. Když vaše stránky vypadají jako duplicity, sloučí je.
Těžší problém začíná ve chvíli, kdy máte kódy správně
Rozbitý hreflang je ten jednodušší případ. Najdete ho, opravíte, hotovo.
Ten těžký je evropský e-shop s čistým, platným a vzájemně provázaným hreflangem, kde Google stejně ukazuje verzi pro špatný trh.
Podívejte se na ty stránky. Stejná měna, všude eura. Stejný jazyk na všech trzích – nizozemština pro NL a BE, francouzština pro FR, BE a LU, němčina pro DE a AT. Stejné názvy produktů. Stejné popisy od výrobce. Stejné ceny.
Co je vlastně odlišuje? Kód země v URL adrese a jeden řádek hreflangu.
Google duplicity slučuje. Dělá to na celém internetu, pořád, a jde mu to. Chtít po něm, aby skoro identické stránky držel od sebe jen na základě jedné nápovědy, znamená žádat ho, aby šel sám proti sobě.
Občas si tedy vybere tu špatnou. Není to náhoda. Stojí za tím algoritmus, který vyhodnocuje signály, na které nevidíte. Jenže když se dvě stránky skoro ničím neliší, rozhodují maličkosti. Zvenčí to vypadá jako hod mincí.
Hreflang nevytvoří rozdíl, který tam není
Pokud jsou dvě stránky pro různé země funkčně identické, máte dvě možnosti. Buď je opravdu odlište, nebo přestaňte předstírat, že jsou samostatné.
Opravdu je odlišit znamená dát Googlu signály, na které vidí. Místní ceny. Místní dodací lhůty a ceny dopravy. Místní adresa a telefon. Místní skladová dostupnost. Recenze od místních zákazníků. Obsah psaný pro ten trh, ne protažený stejnou překladovou pamětí jako ten minulý.
Nic z toho není hreflang. Hreflang ten vztah mezi stránkami popisuje. Nevytváří rozdíl, který ten vztah odůvodňuje.
Alternativou je konsolidace. Jedna silná stránka na jazyk. Zemi vyřešíte přímo na stránce, ne v URL adrese. Míň URL adres, všechny signály na jednom místě, míň věcí, které se můžou rozbít. Pro spoustu webů je to lepší rozhodnutí a nikdo to nahlas neřekne, protože to řešení pro jednotlivé země už existuje a někdo si na něj obhájil rozpočet.
U různých jazyků je to jinak. Přeložený obsah je opravdu odlišný a Google s ním tak i zachází. Nebezpečné jsou verze ve stejném jazyce pro různé trhy.
Dejte hreflang do HTML, kde na něj vidíte
HTML head vyhrává jednou věcí: dá se zkontrolovat. Otevřete zdrojový kód a máte to tam. Zachytíte to v crawlu. Živou stránku ověříte za deset vteřin.
Hreflang v mapě stránek je černá skříňka. Časem přestane sedět s tím, co je na stránkách, a na obou stranách vypadá správně, přitom nedělá nic. Nakonec věříte souboru, místo abyste se podívali na stránku.
Vyberte si jednu metodu. Použít obě a nechat v nich rozporná data je horší než sáhnout po té slabší – když si signály odporují, Google tu dvojici hreflangů zahodí.
Ještě jedna věc. Inline skripty dokážou head rozbít a vytlačit váš hreflang do body, kde nedělá nic. Právě kvůli tomu vám dokumentace Googlu říká, ať validujete vykreslenou stránku.
Hreflang vkládaný JavaScriptem mimochodem funguje. Google čte vykreslené HTML. Jenže rendering probíhá méně často než procházení a ještě méně často na stránkách, na kterých Googlu tolik nezáleží. Vaše změny se tak projeví časem, ne hned. Vykreslete hreflang na serveru a nemusíte čekat.
Nikdo vám neřekne, že máte hreflang rozbitý
Google odstranil přehled Mezinárodní cílení ze Search Console už před lety. Ať už jste si o něm mysleli cokoli, bylo to jediné místo, kde chyby v hreflangu vyplouvaly samy od sebe.
Dneska neexistuje nic centrálního. Neplatný kód selže potichu. Chybějící odkaz zpátky selže potichu. Cíl, ze kterého se mezitím stalo přesměrování, selže potichu. Stránky se přitom načítají úplně normálně.
Odhalit to je váš problém. Naplánujte si na hreflang pravidelný crawl. Zkontrolujte to po každém nasazení, které sahá na šablony nebo routing. Berte to jako Core Web Vitals. Něco, co sledujete i po spuštění.
Ten klient měl vymyšlený kód na webu hodně dlouho, než si to někdo spojil s chaosem v pozicích. Nic mu to říct nemohlo.
Čistý hreflang je minimum. Dejte kódy do pořádku, sjednoťte signály a pak si upřímně přiznejte, jestli vaše stránky pro jednotlivé země vůbec mají důvod existovat zvlášť.
Původní verze tohoto článku je anglická. Do češtiny je přeložená automaticky.

Martin Štěpánek
Konzultant enterprise technického SEO
Jsem konzultant enterprise technického SEO a vývojář. Přes deset let jsem web stavěl, než jsem ho začal opravovat, a produkční kód píšu dodnes. Čtu odpovědi, které váš web skutečně vrací, řeknu vám, které nálezy stojí za sprint, a opravu vašim vývojářům předám sám.
Newsletter o technickém SEO, který vývojáři i SEO specialisté opravdu dočtou
Jeden konkrétní problém rozebraný do konce a jasný názor, co s ním — porovnané s primární dokumentací i s tím, co vidím v auditech. A k tomu tři zprávy z posledních dvou týdnů, vybrané a vysvětlené.



Přihlásit se k odběru
Nové vydání každé dva týdny. Odhlásíte se jedním kliknutím.
Newsletter je pouze v angličtině