Kiedy hreflang jest potrzebny (a kiedy nie)?
Hreflang nie jest potrzebny na każdej stronie. Potrzebujesz go tylko wtedy, gdy masz tę samą treść (lub jej ekwiwalent) w wielu wersjach językowych lub regionalnych. Oto tabela decyzyjna:
| Scenariusz | Hreflang? |
|---|---|
| Ta sama treść w 3 językach (PL, DE, EN) | tak |
| Osobne wersje dla DE (Niemcy) i DE-AT (Austria) | tak |
| Strona tylko po polsku, bez wersji obcych | nie |
| Automatyczne przekierowanie po IP zamiast wersji | nie |
| Sklep z produktami w 5 językach | tak |
| Blog po angielsku + strona główna po polsku | tak |
Ważne: przekierowanie po IP (geolocation redirect) nie zastępuje hreflang. Google crawluje z amerykańskich IP, więc przekierowanie zablokuje mu dostęp do innych wersji. Używaj language selectora + hreflang zamiast przekierowań.
Składnia hreflang krok po kroku
Tag hreflang to element <link> w sekcji <head> Twojej strony. Format jest prosty:
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="pl" href="https://example.com/pl/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />Kody języków i regionów
Hreflang używa kodów ISO 639-1 dla języków i opcjonalnie ISO 3166-1 Alpha-2 dla regionów. Sam język (de) wystarczy, jeśli nie rozróżniasz wariantów regionalnych. Dodaj region (de-AT), gdy masz osobne wersje.
| Kod | Język | Region | Uwagi |
|---|---|---|---|
| pl | polski | - | |
| de | niemiecki | - | Niemcy + Austria + Szwajcaria |
| de-AT | niemiecki | Austria | gdy masz osobną wersję dla Austrii |
| de-CH | niemiecki | Szwajcaria | gdy masz osobną wersję dla Szwajcarii |
| en-GB | angielski | UK | angielski brytyjski |
| en-US | angielski | USA | angielski amerykański |
| fr | francuski | - | Francja + Belgia |
| fr-CA | francuski | Kanada | kanadyjski francuski |
| es | hiszpański | - | kastylijski |
| es-MX | hiszpański | Meksyk | latynoamerykański |
| it | włoski | - | |
| nl | niderlandzki | - | Holandia + Belgia |
| cs | czeski | - | |
| uk | ukraiński | - | uwaga: uk to ukraiński, nie United Kingdom! |
Co to jest x-default?
x-default to specjalna wartość hreflang, która wskazuje wersję domyślną dla użytkowników, którzy nie pasują do żadnej zdefiniowanej wersji językowej. Najczęściej ustawia się ją na wersję angielską lub na stronę z language selectorem. Jest opcjonalna, ale zdecydowanie rekomendowana.
3 metody implementacji hreflang
Masz trzy sposoby na dodanie hreflang do strony. Możesz wybrać jedną metodę lub łączyć HTML head z sitemap (ale muszą być spójne).
HTML <head>
Tagi <link> w sekcji head każdej strony. Najpopularniejsza metoda.
Zalety
Wady
<link rel="alternate" hreflang="pl" href="https://example.com/pl/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />HTTP header
Header Link w odpowiedzi HTTP. Jedyna opcja dla plików nie-HTML.
Zalety
Wady
Link: <https://example.com/de/file.pdf>; rel="alternate"; hreflang="de",
<https://example.com/en/file.pdf>; rel="alternate"; hreflang="en"XML sitemap
Tagi xhtml:link w sitemap.xml. Idealne dla dużych witryn.
Zalety
Wady
<url>
<loc>https://example.com/pl/produkt</loc>
<xhtml:link rel="alternate" hreflang="pl"
href="https://example.com/pl/produkt" />
<xhtml:link rel="alternate" hreflang="de"
href="https://example.com/de/produkt" />
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/produkt" />
</url>Rekomendacja: dla większości stron wybierz HTML <head>. Dla dużych witryn (1000+ podstron) dodaj sitemap jako uzupełnienie. Jeśli łączysz metody, upewnij się, że dane są identyczne.
Hreflang na platformach CMS i e-commerce
Większość platform CMS i e-commerce obsługuje hreflang przez wtyczki lub natywnie. Sprawdź, jak to wygląda na Twojej platformie:
WordPress
WPML / Polylang
WPML dodaje hreflang automatycznie. Polylang wymaga drobnej konfiguracji w ustawieniach języków.
WPML vs Polylang - porównanieShopify
Shopify Markets / Langify / Weglot
Shopify Markets od 2024 generuje hreflang automatycznie. Starsze sklepy mogą potrzebować Langify lub Weglot.
Lokalizacja Shopify na 5 rynkówWooCommerce
WPML + WooCommerce Multilingual
WPML z dodatkiem WooCommerce Multilingual obsługuje hreflang dla produktów, kategorii i checkoutu.
Tłumaczenie WooCommerceMagento
Natywne store views + rozszerzenie
Magento obsługuje multi-store natywnie, ale hreflang wymaga rozszerzenia lub konfiguracji w template.
Tłumaczenie MagentoDrupal
Content Translation + Language (core)
Drupal 10/11 ma wielojęzyczność w core: moduły Content Translation, Language i Locale. Hreflang generuje się automatycznie po włączeniu Language Negotiation.
Tłumaczenie DrupalNext.js / Headless
next-intl / middleware
W headless CMS i frameworkach jak Next.js implementujesz hreflang w middleware lub w komponencie <head>.
Wszystkie platformy CMS7 najczęstszych błędów hreflang
Te błędy widzimy na co najmniej połowie stron, które audytujemy. Każdy z nich powoduje, że Google ignoruje Twój hreflang lub źle interpretuje strukturę językową.
#1Brak wzajemnych referencji
Strona PL wskazuje na DE, ale DE nie wskazuje z powrotem na PL. Google ignoruje jednostronne hreflang.
Każda strona musi wskazywać na wszystkie wersje językowe, w tym na samą siebie.
#2Błędne kody języków
Najczęstszy błąd: 'uk' to ukraiński (ISO 639-1), nie United Kingdom. Dla angielskiego w UK użyj 'en-GB'.
Używaj kodów ISO 639-1 (język) i ISO 3166-1 Alpha-2 (region). Waliduj kodem, nie intuicją.
#3Hreflang na stronach z noindex lub 404
Wskazujesz hreflangiem na stronę, która ma noindex lub zwraca 404. Google to zignoruje.
Hreflang może wskazywać tylko na strony z kodem 200 i bez noindex.
#4Konflikt hreflang vs canonical
Canonical wskazuje na inną wersję językową (np. polska strona ma canonical na angielską). Google nie wie, co jest źródłem.
Canonical zawsze na tę samą stronę (self-referencing). Hreflang wskazuje na alternatywy.
#5Brak self-referencing hreflang
Strona nie wskazuje sama na siebie w tagach hreflang. Google wymaga self-reference w każdym zestawie.
Dodaj tag hreflang wskazujący na bieżącą stronę w jej własnym języku.
#6Mieszanie metod implementacji
Hreflang w HTML head mówi co innego niż hreflang w sitemap. Google dostaje sprzeczne sygnały.
Wybierz jedną metodę główną. Jeśli używasz dwóch, muszą być identyczne.
#7Brak x-default
Nie ustawiony x-default dla użytkowników, którzy nie pasują do żadnej wersji językowej.
Dodaj x-default wskazujący na wersję domyślną (najczęściej angielską lub z language selector).
Hreflang a canonical, struktura URL i sitemap
Hreflang, canonical i struktura URL muszą ze sobą współpracować. Jeśli się kłócą, Google zignoruje hreflang. Oto jak to powinno wyglądać:
Poprawna konfiguracja canonical + hreflang
Dobrze
<!-- Na stronie /de/ -->
<link rel="canonical" href="/de/" />
<link rel="alternate" hreflang="de" href="/de/" />
<link rel="alternate" hreflang="pl" href="/pl/" />
<link rel="alternate" hreflang="en" href="/en/" />Źle
<!-- Na stronie /de/ -->
<link rel="canonical" href="/en/" />
<!-- ↑ canonical na INNĄ wersję! -->
<link rel="alternate" hreflang="de" href="/de/" />
<link rel="alternate" hreflang="en" href="/en/" />Zasada: canonical zawsze wskazuje sam na siebie (self-referencing). Hreflang wskazuje na alternatywy językowe.
Struktura URL a hreflang
| Podejście | Przykład | SEO | Złożoność |
|---|---|---|---|
| Subfolderrekomendowane | example.com/de/ | Dobry | Niska |
| Subdomena | de.example.com | Dobry | Średnia |
| Osobna domena | example.de | Bardzo dobry (ccTLD) | Wysoka |
Subfoldery to najczęstszy i najłatwiejszy wybór. Osobne domeny (ccTLD) dają najsilniejszy sygnał geotargetowania, ale wymagają osobnego budowania autorytetu dla każdej domeny. Więcej o konfiguracji SEO wielojęzycznego na naszej stronie usługi SEO wielojęzycznego.
Jak sprawdzić poprawność hreflang?
Po wdrożeniu hreflang musisz zweryfikować, że wszystko działa poprawnie. Oto narzędzia i checklista:
Google Search Console
Raport indeksowania + Inspect URL
Ahrefs Site Audit
Crawl hreflang + błędy
Screaming Frog
Szczegółowy crawl tagów
Hreflang Tag Checker
Darmowa walidacja online
Checklista QA hreflang (kopiuj i używaj)
Najczęstsze pytania o hreflang
Tagi:
