Hreflang

Hreflang to mechanizm oznaczania wersji językowych i/lub regionalnych tej samej treści w serwisie WWW, przekazywany wyszukiwarkom najczęściej poprzez atrybut `hreflang` w linkach alternatywnych. Jego celem jest ułatwienie wyszukiwarkom wyboru właściwej wersji strony do wyświetlenia użytkownikowi w wynikach wyszukiwania (SERP) na podstawie języka i/lub lokalizacji.

Hreflang działa na etapie interpretacji relacji między stronami, które są wariantami tej samej treści (np. „O nas” po polsku, angielsku i niemiecku albo wersje dla różnych krajów). W praktyce jest to sygnał pomocniczy: wskazuje, że kilka adresów URL reprezentuje równoległe wersje, a nie duplikaty przeznaczone do rywalizacji o to samo zapytanie. Wyszukiwarka może dzięki temu częściej kierować użytkownika na stronę zgodną z jego preferencjami językowymi lub kontekstem regionalnym.

Mechanizm ten jest szczególnie istotny w serwisach międzynarodowych, gdzie te same produkty, kategorie lub artykuły występują w wielu językach albo w wariantach „en-US” i „en-GB” różniących się słownictwem, walutą, dostępnością czy informacjami prawnymi. Hreflang nie „tłumaczy” treści i nie tworzy automatycznie wersji językowych; jest wyłącznie metadanym opisującym relacje między istniejącymi URL-ami.

Technicznie hreflang można przekazać na kilka sposobów: w kodzie HTML w sekcji „ jako linki alternatywne, w nagłówkach HTTP (częściej dla plików nie-HTML, np. PDF) lub w mapie witryny (sitemap). Najczęściej spotykany zapis w HTML wygląda tak:

„`html

„`

Warto podkreślić, że wyszukiwarki traktują hreflang jako wskazówkę, a nie gwarancję. Aby sygnał był użyteczny, strony muszą być możliwe do zindeksowania (nieblokowane w robots.txt, nieoznaczone `noindex`, dostępne bez błędów serwera), a relacje między wersjami powinny być spójne. Częstym wymogiem praktycznym jest wzajemność: jeśli strona A wskazuje stronę B jako alternatywę językową, strona B powinna wskazywać stronę A w analogiczny sposób. Brak spójności może osłabić skuteczność oznaczeń lub prowadzić do ich ignorowania.

Hreflang jest też ściśle powiązany z problematyką duplikacji i kanonikalizacji, ale nie zastępuje tagu canonical. `rel=”canonical”` służy do wskazania preferowanej wersji w obrębie bardzo podobnych lub identycznych treści (np. parametry URL, warianty sortowania), natomiast hreflang służy do rozróżniania równorzędnych wersji językowych/regionalnych. W typowym scenariuszu strony w różnych językach nie kanonikalizują się wzajemnie, bo każda z nich jest „właściwa” dla innej grupy odbiorców; zamiast tego łączy się je zestawem oznaczeń hreflang.

W praktyce poprawne wdrożenie wymaga konsekwencji w doborze kodów języka i regionu (np. `pl`, `pl-PL`, `en`, `en-GB`, `en-US`) oraz w mapowaniu URL-i. Przykładowo, jeśli serwis ma jedną wersję angielską globalną, zwykle stosuje się `en` zamiast mnożenia wariantów regionalnych bez realnych różnic. Z kolei gdy istnieją różnice istotne dla użytkownika (ceny w USD vs GBP, inne warunki dostawy, inne treści prawne), warianty regionalne mogą być uzasadnione. Często dodaje się też `x-default` jako „domyślną” stronę dla użytkowników, dla których nie ma dopasowanej wersji (np. strona wyboru kraju/języka lub wersja globalna).

  • Kluczowe właściwości
  • Sygnał dla wyszukiwarek, nie dla użytkownika: hreflang jest metadanym, które pomaga w doborze wersji strony w wynikach wyszukiwania; nie zmienia automatycznie treści ani nie przekierowuje użytkownika.
  • Dotyczy wariantów językowych/regionalnych tej samej treści: łączy URL-e, które są odpowiednikami (np. ten sam artykuł w różnych językach), a nie strony o innym temacie.
  • Wymaga spójności i kompletności: zestaw alternatyw powinien obejmować wszystkie wersje danej strony, a relacje między nimi powinny być wzajemne (A wskazuje B i B wskazuje A).
  • Współistnieje z indeksowaniem i dostępnością: strony muszą być dostępne dla crawlera i możliwe do indeksowania; hreflang nie „naprawi” problemów typu `noindex`, błędy 404/5xx czy blokady.
  • Nie zastępuje canonical: canonical rozwiązuje problem wyboru jednej wersji w obrębie duplikatów, a hreflang rozwiązuje problem wyboru właściwej wersji dla użytkownika w kontekście języka/regionu.
  • Typowe konteksty użycia
  • Serwisy wielojęzyczne: np. `/pl/`, `/en/`, `/de/` dla tych samych podstron (kategorie, produkty, wpisy blogowe, strony informacyjne).
  • Serwisy wieloregionalne: np. osobne wersje dla `en-GB` i `en-US`, gdy różnią się walutą, dostępnością, polityką zwrotów lub treściami prawnymi.
  • E-commerce i katalogi: gdy te same produkty mają opisy w wielu językach, a wyszukiwarka ma kierować użytkownika na właściwy rynek.
  • Treści redakcyjne i dokumentacja: artykuły, poradniki, dokumentacja techniczna utrzymywana w kilku językach, gdzie ważne jest dopasowanie wersji do preferencji użytkownika.
  • Pliki nie-HTML: np. PDF-y w różnych językach, gdzie oznaczenia mogą być przekazywane nagłówkami HTTP (zależnie od architektury serwisu).
  • Częste nieporozumienia
  • „Hreflang poprawia ranking”: hreflang nie jest typowym czynnikiem rankingowym; jego rola polega głównie na doborze właściwej wersji w SERP i ograniczaniu konfliktu między wariantami językowymi.
  • „Wystarczy dodać hreflang na stronie głównej”: oznaczenia powinny dotyczyć konkretnych odpowiedników podstron (np. produkt ↔ produkt, artykuł ↔ artykuł), a nie tylko homepage.
  • „Hreflang zastępuje przekierowania geolokalizacyjne”: automatyczne przekierowania po IP mogą utrudniać crawling i indeksowanie; hreflang nie jest przekierowaniem i nie powinien być traktowany jako jego zamiennik.
  • „Można mieszać języki na jednej stronie i oznaczyć to hreflang”: jeśli jedna strona zawiera wiele języków jednocześnie, hreflang zwykle nie rozwiązuje problemu dopasowania; lepiej utrzymywać wyraźne wersje językowe URL-i.
  • „Każdy kraj musi mieć osobny wariant”: warianty regionalne mają sens, gdy istnieją realne różnice; w przeciwnym razie nadmierna segmentacja zwiększa koszty utrzymania i ryzyko błędów w oznaczeniach.

Przykład praktyczny: jeśli strona produktu ma wersje `https://example.com/pl/produkt-123/` i `https://example.com/en/product-123/`, to każda z nich powinna wskazywać drugą jako alternatywę, a opcjonalnie można dodać `x-default` prowadzący do strony wyboru języka. Dzięki temu użytkownik wyszukujący po angielsku częściej zobaczy w SERP wersję angielską, a użytkownik z preferencją polskiego — wersję polską, bez konieczności „konkurowania” tych dwóch URL-i o identyczne zapytania w jednym języku.