Hreflang - jak wskazać Google wersje językowe strony?
Czym jest hreflang i kiedy go potrzebujesz?
hreflang informuje Google, że kilka adresów URL to językowe lub regionalne wersje tej samej strony. Pomaga wyszukiwarce wybrać właściwy adres dla użytkownika, ale nie tłumaczy treści, nie przekierowuje odbiorcy i nie naprawia źle zaprojektowanej architektury rynków.
To wskazówka, a nie polecenie gwarantujące wyświetlenie konkretnego URL-a.
Jeśli prowadzisz sklep w kilku językach albo kierujesz tę samą ofertę do klientów w różnych krajach, hreflang jest jednym z podstawowych elementów technicznego SEO. Jego najważniejszym zadaniem jest ograniczenie sytuacji, w których użytkownik z Niemiec trafia z Google na polską kartę produktu albo klient z Wielkiej Brytanii widzi wersję przygotowaną dla Stanów Zjednoczonych.
Ważne: poprawnie przetłumaczone wersje nie stają się duplikatami tylko dlatego, że opisują ten sam produkt. Google traktuje zlokalizowane strony jako duplikaty dopiero wtedy, gdy ich główna treść pozostaje nieprzetłumaczona. hreflang służy przede wszystkim dopasowaniu wersji, a nie ratowaniu pełnych tłumaczeń przed karą za duplikację.
Kiedy wdrożenie ma sens?
| Sytuacja | Czy użyć hreflang? | Przykład |
|---|---|---|
| ten sam produkt ma pełne wersje w różnych językach | tak | pl, de, en |
| strony są w tym samym języku, ale różnią się ofertą regionalną | tak | en-US, en-GB |
| rynki działają na osobnych domenach lub subdomenach | tak, URL-e nie muszą należeć do jednej domeny | example.pl, example.de |
| jedyną zmianą jest waluta wyświetlana dynamicznie pod tym samym URL-em | zwykle nie | jeden adres, ceny zależne od ustawienia użytkownika |
| serwis ma tylko jedną wersję językową i regionalną | nie | wyłącznie wersja polska |
Google nie używa hreflang ani atrybutu HTML lang do rozpoznawania języka strony — określa go własnymi algorytmami na podstawie widocznej treści. Dlatego sam kod nie zastąpi kompletnego tłumaczenia i lokalizacji oferty.
Co musi działać przed dodaniem hreflang?
Każda wersja powinna mieć własny, stabilny URL, który Google może pobrać i zaindeksować. Użytkownik powinien też móc przełączać język lub kraj zwykłym linkiem. Nie opieraj całej architektury na automatycznym przekierowaniu według IP lub języka przeglądarki — robot może wtedy nie zobaczyć wszystkich wariantów, a użytkownikowi trudniej będzie świadomie zmienić rynek.
Przed generowaniem adnotacji sprawdź:
- czy odpowiadające sobie strony naprawdę realizują ten sam cel, na przykład karta tego samego produktu wskazuje kartę tego produktu, a nie stronę główną;
- czy wszystkie wersje są dostępne pod pełnymi adresami HTTPS;
- czy nie zwracają
404, nie prowadzą przez zbędne przekierowania i nie są blokowane przezrobots.txtlubnoindex; - czy każda wersja ma właściwy canonical;
- czy język głównej treści zgadza się z deklarowanym kodem.
W naszym podejściu mapa odpowiedników jest ważniejsza niż sam sposób wygenerowania tagów. Jeśli CMS nie potrafi wiarygodnie ustalić, że polski produkt odpowiada dokładnie niemieckiemu produktowi, automatyzacja szybko stworzy poprawny składniowo, ale biznesowo błędny klaster.
Trzy sposoby wdrożenia hreflang
Google obsługuje trzy równoważne metody: tagi HTML, nagłówek odpowiedzi HTTP oraz sitemapę XML. Można używać ich równolegle, ale nie daje to dodatkowej korzyści w wynikach wyszukiwania i zwiększa ryzyko, że implementacje zaczną sobie przeczyć. Wybierz jedno źródło prawdy, które zespół potrafi utrzymać.
1. Znaczniki HTML w sekcji head
To najczęstsza metoda dla stron HTML. Identyczny zestaw linków umieszczasz w prawidłowej sekcji <head> każdej wersji — także na stronie polskiej, niemieckiej i angielskiej.
|
|
Ta metoda jest czytelna i łatwa do sprawdzenia w źródle strony. Przy dużym katalogu trzeba jednak pilnować, aby CMS generował ten sam aktualny zestaw na każdym URL-u klastra.
2. Nagłówek HTTP
Nagłówek Link jest szczególnie przydatny dla plików innych niż HTML, na przykład dokumentów PDF. Każda wersja zasobu powinna zwracać ten sam zestaw obejmujący również ją samą.
|
|
3. Mapa witryny XML (sitemap)
Sitemap bywa najwygodniejsza przy setkach lub tysiącach stron w wielu wariantach. Każdy URL otrzymuje osobny element <url>, a wewnątrz niego trzeba powtórzyć pełny zestaw alternatyw wraz z self-reference. Pamiętaj także o przestrzeni nazw xmlns:xhtml.
|
|
Więcej o strukturze i diagnostyce map piszemy w przewodniku po sitemap XML.
Self-reference, reciprocity i x-default
Poprawny klaster to nie lista luźnych tagów, ale spójna relacja między stronami.
| Warunek | Jak powinien działać? | Typowy błąd |
|---|---|---|
| self-reference | każda strona wymienia także własny URL i kod | polska strona wskazuje tylko de i en |
| reciprocity | jeśli strona A wskazuje B, strona B wskazuje A | nowy rynek dodano tylko w jednym szablonie |
| kompletność | każda wersja zawiera ten sam zestaw obsługiwanych odpowiedników | jedna wersja nadal pokazuje nieaktualny klaster |
| pełny URL | href zawiera protokół i host | użyto /de/produkt/ zamiast pełnego adresu |
| canonical | hreflang prowadzi do właściwych kanonicznych wersji | wszystkie języki mają canonical do wersji polskiej |
| dostępność | URL jest bezpośrednio dostępny i indeksowalny | tag prowadzi do 404, przekierowania lub strony z noindex |
Dlaczego link zwrotny jest ważny?
Jeśli polska strona wskazuje wersję niemiecką, niemiecka powinna wskazywać z powrotem polską. Brak wzajemności nie musi unieważnić wszystkich pozostałych relacji w rozbudowanym klastrze, ale Google może zignorować niepotwierdzoną parę. Właśnie dlatego przy kilkunastu rynkach nie warto ręcznie składać tagów w każdym szablonie.
Jak zapisać kod języka i regionu?
Język zapisujesz zgodnie z ISO 639-1, a opcjonalny region zgodnie z ISO 3166-1 Alpha-2:
pl— język polski niezależnie od kraju,de— język niemiecki niezależnie od kraju,en-GB— angielski dla Wielkiej Brytanii,pt-BR— portugalski dla Brazylii.
Nie używaj pol, deutsch, en_US ani samego kodu regionu. Jeżeli masz en-US i en-GB, warto rozważyć również ogólną wersję en dla pozostałych użytkowników anglojęzycznych.
Do czego służy x-default?
x-default wskazuje stronę dla użytkowników, do których nie pasuje żadna z określonych wersji. Najczęściej jest to selektor kraju lub języka, ewentualnie rozsądna wersja domyślna. Nie jest obowiązkowy, ale przy wielu rynkach porządkuje zachowanie domyślne i usuwa konieczność zgadywania, który wariant ma pełnić tę rolę.
Hreflang i canonical rozwiązują inne problemy
hreflang łączy wersje przeznaczone dla różnych odbiorców. Canonical wskazuje preferowany URL w grupie stron duplikujących lub bardzo podobnie realizujących ten sam cel. Nie należy więc ustawiać na wszystkich tłumaczeniach canonicala do wersji polskiej, a później próbować „odwrócić” tego tagami hreflang.
Dla pełnych tłumaczeń standardem jest self-canonical na każdej wersji oraz spójny klaster hreflang. Jeśli kilka regionalnych URL-i ma główną treść w tym samym języku i jest ona praktycznie identyczna, decyzję o canonicalizacji trzeba podjąć świadomie oraz skoordynować z mapowaniem językowo-regionalnym. Szersze zasady opisujemy w artykule o canonicalu.
Sprawdź hreflang w HTML lub sitemap XML
Wklej źródło strony, fragment sitemap albo otwórz lokalny plik. Inspektor sprawdzi kody języka i regionu, duplikaty, x-default, pełne URL-e i — po podaniu adresu analizowanej strony — tag samoreferencyjny. Nie pobiera wskazanych URL-i, dlatego nie potwierdza ich kodów odpowiedzi ani linków zwrotnych na stronach spoza wklejonego zestawu.
Analiza lokalna w przeglądarce
Sprawdź hreflang w HTML lub sitemap
Wklej kod strony, fragment sitemap XML albo otwórz lokalny plik. Analiza nie wysyła kodu na serwer.
Wynik kontroli
Wymaga uwagi
Sprawdzone pozytywnie
Czego ten test nie sprawdza
- kodu odpowiedzi, przekierowań ani indeksowalności wskazanych URL-i,
- wzajemności tagów na stronach, których kodu nie ma we wklejonym zestawie,
- hreflang przesyłanego w nagłówku HTTP.
Jak diagnozować hreflang bez starego raportu GSC?
Google Search Console nie udostępnia już dawnego raportu „Wersje w różnych językach”. Search Console nadal pomaga sprawdzić indeksowalność, canonical wybrany przez Google i wyniki poszczególnych URL-i, ale nie zastępuje crawla całego klastra.
W audycie sprawdzamy kolejno:
- Źródło adnotacji: HTML, nagłówek HTTP czy sitemap — oraz czy przypadkiem nie istnieją równoległe, rozjechane implementacje.
- Składnię: pełne URL-e, poprawne kody języka i regionu, duplikaty oraz
x-default. - Self-reference i linki zwrotne: relacje trzeba analizować między URL-ami, a nie tylko na jednej stronie.
- Status i indeksowalność: bezpośredni kod
200, braknoindex, możliwość crawlowania i właściwy canonical. - Zgodność semantyczną: odpowiedniki muszą przedstawiać tę samą ofertę lub treść dla innego języka albo regionu.
- Rzeczywisty wynik: w Search Console porównujemy zaindeksowany URL, canonical oraz strony i kraje pojawiające się w raporcie skuteczności.
Do crawla i kontroli wzajemności można wykorzystać Screaming Frog, Sitebulb albo Ahrefs Site Audit. Nasz inspektor jest szybszy przy pojedynczym HTML-u lub fragmencie sitemap, ale celowo nie pobiera wszystkich wskazanych stron. Żaden walidator nie stwierdzi też za zespół, czy niemiecki URL naprawdę jest odpowiednikiem konkretnego polskiego produktu.
Wdrażasz sklep na rynki zagraniczne?
Pomożemy zaplanować architekturę wielojęzycznego SEO, zbudować mapę odpowiedników i wdrożyć hreflang bez konfliktów z canonicalem.
Shopify Markets a hreflang
Shopify Markets automatycznie generuje tagi hreflang na podstawie konfiguracji rynków, domen i języków. W standardowym motywie Liquid trafiają one do <head> przez content_for_header; Shopify utrzymuje również canonicale i międzynarodową sitemapę. To duże ułatwienie, o ile konfiguracja rynków odpowiada faktycznej architekturze sklepu.
Markets może korzystać z podfolderów, subdomen lub osobnych domen. Automatyczne tagi powstają tylko wtedy, gdy rynek ma odrębny adres. Platforma dodaje też x-default wskazujący domenę główną. Aktualne zachowanie opisuje dokumentacja międzynarodowego SEO Shopify.
Na co zwrócić uwagę:
- jeśli Langify, Weglot, inna aplikacja albo zmodyfikowany motyw również generuje tagi, możesz otrzymać dwa sprzeczne zestawy;
- po usunięciu rynku sprawdź, czy stare URL-e nie pozostały w adnotacjach i sitemapie;
- przy kilku osobnych sklepach Shopify na różnych domenach automatyzacja jednego Markets może nie znać odpowiedników w pozostałych sklepach;
- nie hardkoduj uchwytów produktów i kolekcji, ponieważ mogą różnić się między językami;
- po każdej zmianie domen, języków i aplikacji ponów crawl, zamiast zakładać, że automatyzacja nadal składa poprawny klaster.
W praktyce najczęściej nie naprawiamy Shopify przez dopisanie kolejnej pętli hreflang w Liquid. Najpierw ustalamy, który mechanizm ma być jedynym źródłem adnotacji, i wyłączamy pozostałe.
Najczęściej zadawane pytania
Czy hreflang wpływa bezpośrednio na pozycje w wynikach wyszukiwania?
Czy muszę wdrożyć hreflang, jeśli mam tylko jedną wersję językową sklepu?
Jak sprawdzić, czy hreflang działa poprawnie?
Czy mogę użyć hreflang do rozróżnienia wersji z różnymi walutami, ale w tym samym języku?
de-DE i de-AT, z odmienną dostępnością, dostawą lub warunkami sprzedaży. Jeśli zmienia się tylko przelicznik waluty pod tym samym adresem, hreflang zwykle nie jest właściwym mechanizmem.