.animate-view{opacity: 1 !important;}

Hreflangi. Jak prawidłowo oznaczać wersje językowe strony?

15min.

Komentarze:2

Hreflangi. Jak prawidłowo oznaczać wersje językowe strony?d-tags
22 lutego 2023
Not-fun fact: według raportu przeprowadzonego przez SEMrush w 2017 roku, ok. 75% wielojęzycznych stron posiada źle wdrożone hreflangi lub nie posiada ich wcale. Może to zrodzić kilka pytań, jak - i po co - używać ich poprawnie.

15min.

Komentarze:2

Spis treści:

  1. Co to jest hreflang?
  2. Implementacja
  3. Zarządzanie hreflangami i aspekty techniczne
  4. Przydatne narzędzia
  5. Na co zwrócić szczególną uwagę, czyli najczęstsze błędy
  6. Podsumowanie

Analizując około 20 tysięcy wielojęzycznych stron internetowych za pomocą narzędzia SEMrush przebadano poprawność wdrożenia hreflangów zgodnie ze standardami Google. Szczegółowo omówili, jak często występują poszczególne błędy. Ogólny wniosek z badania jest taki, że ¾ stron www nie korzysta – lub korzysta nieprawidłowo – z atrybutu hreflang.

Co to jest hreflang?

Atrybut hreflang służy do poinformowania robotów wyszukiwarek, iż dana podstrona ma inne wersje, przeznaczone dla odbiorców posługujących się różnymi językami, bądź pochodzących z różnych regionów – np. krajów o tym samym języku, jak Niemcy i Austria. Jest to jeden z aspektów SEO międzynarodowego.

Pozycjonowanie za granicą - Delante

W języku HTML znajduje się co prawda atrybut lang, który określa język zawartości danej strony. Nic on nie mówi jednak o innych wersjach językowych – do tego bowiem służą hreflangi. W praktyce otrzymujemy dwie wymierne korzyści z ich zastosowania:

  1. Hreflangi pozwolą nam zmniejszyć współczynnik odrzuceń. Użytkownicy będą kierowani na najbardziej dopasowaną do nich wersję naszego serwisu.
  2. Strony powiązane za pomocą atrybutu hreflang nie będą traktowane jako duplikacja treści. Tak mogłoby się zdarzyć w przypadku, gdy mamy odrębne podstrony dla np. USA i Wielkiej Brytanii – zawarta treść byłaby taka sama, różnice dotyczyłyby walut i kosztów transportu. Poprzez hreflangi informujemy wyszukiwarkę, że jest to ta sama treść skierowana dla różnych odbiorców.

Sam John Mueller, nazywany czasami “łącznikiem między Google a resztą świata”, przyznał, że jego zdaniem hreflangi są jednym z najbardziej złożonych aspektów SEO. Podpytywany o przygotowanie materiału video na ten temat stwierdził, że to materiał raczej na rozbudowany kurs, aniżeli 5-minutowy filmik. Asekuracyjnie dodał jednak, że podstawowe implementacje nie są trudne.

Wyszukiwarki wspierające hreflangi

Hreflangi są interpretowane “tylko” przez trzy wyszukiwarki. Fakt, że jedną z nich jest Google, pozwala wziąć owo “tylko” w cudzysłów. Pozostałe dwie to Yandex i Seznam. W innych będziemy musieli liczyć na znacznik języka (tag <meta lang=”xx”>). Jednak tylko Google obsługuje hreflangi wdrożone inaczej, niż poprzez znaczniki HTML.

Sposób działania

Poprawnie zaimplementowany atrybut hreflang będzie informował wyszukiwarkę o wszystkich innych dostępnych wariantach językowych. W momencie wysłania zapytania przez użytkownika, Google najpierw określi adres, który chce umieścić w wynikach wyszukiwania, dopiero w następnej kolejności sprawdza, czy dla danego adresu istnieją inne wersje językowe, spośród których wybierze najbardziej adekwatny dla użytkownika.

Jak działa hreflang?

Atrybut hreflang a ranking Google

Z tego powodu hreflangi nie powinny być traktowane jako czynnik rankingowy, a optymalizacja bądź dolinkowanie jednej wersji podstrony nie wpłynie wprost na pozycję pozostałych. Oczywiście, tylko bezpośrednio. Poprawne ich zastosowanie pomaga zmniejszyć współczynnik odrzuceń i wyeliminować duplikację treści, poprzez co już może przełożyć się na poprawę pozycji w SERP-ach.

Implementacja

Implementację hreflangów można przeprowadzić – zasadniczo – na trzy sposoby:

  1. W sekcji head
  2. Jako nagłówki http
  3. Poprzez mapę XML

Hreflangi w sekcji head

Tag będzie miał wówczas następującą budowę:

<link rel=”alternate” hreflang=”kod_języka-kod_regionu” href=”url-strony”>

Kod języka należy podać według formatu ISO 639-1, kod regionu, podawany według formatu ISO 3166-1 Alpha 2, jest opcjonalny. Kiedy warto go stosować omówię poniżej. Url-strony musi zawierać pełną ścieżkę bezwzględną.
Tag musimy umieścić do każdej wersji strony oraz dodatkowy url prowadzący do bieżącej podstrony. Aby implementacja była poprawna, taki zestaw hreflangów należy umieścić na każdej wersji strony.

Przykładowo, jeżeli posiadamy witrynę przygotowaną w trzech wersjach językowych: polskiej, angielskiej i niemieckiej (pomijam na razie kwestię regionów) – http://mojastrona.com (pl), http://mojastrona.com/en oraz http://mojastrona.com/de, wówczas na każdej z nich musimy umieścić cały zestaw:

<link rel=”alternate” hreflang=”pl” href=”http://mojastrona.com”>
<link rel=”alternate” hreflang=”en” href=”http://mojastrona.com/en”>
<link rel=”alternate” hreflang=”de” href=”http://mojastrona.com/de”>

Jak widać, zawsze dodajemy też znacznik z linkiem do strony, na której ów zestaw dodajemy.

Dodatkowo, warto umieścić dodatkowy tag, który będzie zbierał użytkowników, którzy nie posługują się żadnym z wymienionych języków. W naszym przykładzie najlogiczniej kierować ich na wersję w języku angielskim, zatem:

<link rel=”alternate” hreflang=”x-default” href=”http://mojastrona.com/en”>

Więcej o hreflangu z x-default przeczytasz w dalszej części.

Hreflangi w nagłówku HTTP

Nagłówek HTTP to dodatkowa informacja dołączona do zapytań wysyłanych do i przez serwery (takim nagłówkiem są np. pliki Cookies, czyli popularne ciasteczka). Metoda ta przydaje się w przypadku plików, które nie mają formatu HTML, czyli np. PDF-ów.

Nagłówek powinien mieć format:

Link: <url-1>; rel=”alternate”; hreflang=”kod_języka_1-kod_regionu_1”, <url-2>; rel=”alternate”; hreflang=”kod_języka_2-kod_regionu_2”, …

Kody języka i regionu są analogiczne, jak w przypadku tagów HTML. Trzymając się więc naszego przykładu, nagłówek będzie miał postać:

Link: <http://mojastrona.com>; rel=”alternate”; hreflang=”pl”,  <http://mojastrona.com/en>; rel=”alternate”; hreflang=”en”, <http://mojastrona.com/de>; rel=”alternate”; hreflang=”de”

Dla każdej wersji strony należy określić taki sam zestaw nagłówków, w którym parametry są oddzielone przecinkami. W skład zestawu musi wejść także parametr odsyłający do bieżącej strony.

Hreflangi w mapie witryny

Hreflangi można wdrożyć także za pomocą znaczników XML w mapie witryny. Schemat dla dwóch wersji jednej podstrony prezentuje się następująco:

<url>
<loc>url-1</loc>
<xhtml:link rel="alternate" hreflang="kod_języka_1-kod_regionu_1"  href="url-1" />
<xhtml:link rel="alternate" hreflang="kod_języka_2-kod_regionu_2"  href="url-2" />
</url>
<url>
<loc>url-2</loc>
<xhtml:link rel="alternate" hreflang="kod_języka_1-kod_regionu_1"  href="url-1" />
<xhtml:link rel="alternate" hreflang="kod_języka_2-kod_regionu_2"  href="url-2" />
</url>

Czyli w naszym przykładzie w mapie witryny powinien się pojawić następujący kod:
<url>
<loc>http://mojastrona.com</loc>
<xhtml:link rel="alternate" hreflang="pl"  href="http://mojastrona.com" />
<xhtml:link rel="alternate" hreflang="en"  href="http://mojastrona.com/en" />
<xhtml:link rel="alternate" hreflang="de"  href="http://mojastrona.com/de" />
</url>

<url>
<loc>http://mojastrona.com/en</loc>
<xhtml:link rel="alternate" hreflang="pl"  href="http://mojastrona.com" />
<xhtml:link rel="alternate" hreflang="en"  href="http://mojastrona.com/en" />
<xhtml:link rel="alternate" hreflang="de"  href="http://mojastrona.com/de" />
</url>
<url>
<loc>http://mojastrona.com/de</loc>
<xhtml:link rel="alternate" hreflang="pl"  href="http://mojastrona.com" />
<xhtml:link rel="alternate" hreflang="en"  href="http://mojastrona.com/en" />
<xhtml:link rel="alternate" hreflang="de"  href="http://mojastrona.com/de" />
</url>

Ogólne zasady implementacji hreflangów

Oprócz powyższych zaleceń jest także kilka ogólnych uwag, o których musimy pamiętać, wdrażając hreflangi.

  • Zawsze musimy uwzględnić wszystkie inne wersje językowe oraz aktualną podstronę.
    Jak dodać hreflangi?

    Mamy dwie wersje językowe. Obie są ze sobą powiązane hreflangami. Na każdej będą więc dwa hreflangi – jeden do wersji alternatywnej, drugi do samej siebie plus x-default. Póki co, jest to dość proste…

    Hreflangi dla 3 wersji językowych

    Trzy wersje językowe, każda wskazuje na wszystkie pozostałe. Powinniśmy więc mieć na każdej podstronie trzy hreflangi – jeden do samej siebie, dwa do pozostałych wersji podstrony plus x-default na każdej.

    Hreflang - dodawanie linkowanie do siebie

    Każda kolejna wersja językowa (lub regionalna) to kolejny hreflang do dodania.

  • Podawane adresy URL muszą być pełne, tzn. obejmować także protokół http/https.
  • Możemy łączyć adresy także z różnych domen i subdomen, nie tylko katalogów językowych (np. http://pl.mojastrona.com i http://en.mojastrona.com, czy http://mojastrona.pl i http://mojastrona.en)
  • Aby hreflang został wzięty pod uwagę, obie podstrony muszą nawzajem na siebie wskazywać. Jest to swego rodzaju zabezpieczenie, dzięki któremu nikt nie będzie mógł wskazać twojej strony jako alternatywnej wersji swojej witryny.
  • Hreflangi należy ustawić na każdej podstronie, dla każdej podstrony podając dokładne ścieżki URL. Powiązanie różnych wersji strony głównej nie wystarczy!
  • Nie ma natomiast znaczenia kolejność, w jakiej podajemy kolejne wersje strony. Zawsze wskazana zostanie najbardziej szczegółowa, czyli zawierająca kod języka i kod regionu, następnie kod języka, a jako ostatnie zawierająca x-default.
  • Zawsze warto ustawiać parameter x-default dla użytkowników, dla których nie sprecyzowaliśmy języka, odsłyjąc ich do wersji przygotowanej w najbardziej popularnym języku.
  • Aby Google wziął pod uwagę hreflangi, wszystkie powiązane strony muszą być w indeksie.
Komentarz specjalisty

Gdybym miał wskazać jedną radę dla każdego, kto planuje rozpocząć wdrażanie różnych wersji językowych na stronie internetowej, to byłoby to: nie spiesz się. To krok, który może naprawdę zaważyć na skuteczności Twojego SEO, więc nie może być to impulsywne działanie. Poświęć czas, zastanów się nad różnymi opcjami, możliwymi rozwiązaniami technicznymi, aby upewnić się, że wdrożenie nowej wersji językowej będzie skuteczne i będzie działać na korzyść Twojej firmy.

Mateusz Calik Delante
Mateusz Calik
Head of SEO & SEM

BONUS: Google Tag Manager

Dodatkową metodą wdrożenia hreflangów na stronę jest skorzystanie z Google Tag Managera. Zaznaczmy jednak, że metoda ta nie znajduje się w oficjalnej dokumentacji Google. Jej autorzy twierdzą jednak, że działa. Kilka elementów może uchodzić za dyskusyjne, niemniej już od jakiegoś czasu nie brak specjalistów, którzy twierdzą, że GTM daje olbrzymie możliwości dla SEO.

Cały koncept opiera się na wykorzystaniu zmiennej “Element DOM”. Za jej pomocą można skonstruować taki tag, który dynamicznie będzie generował hreflangi dla każdej podstrony. Metoda ta może wydawać się skomplikowana dla kogoś, kto nie miał wcześniej styczności z Menadżerem Tagów czy JavaScriptem. Wystarczy jednak to skonfigurować raz i mieć pewność, że GTM automatycznie już wygeneruje zestaw hreflangów dla każdej podstrony.

Po szczegółową instrukcję, jak skonfigurować cały tag, można znaleźć na blogu SearchVIU. Na końcu tekstu znajdziemy przykład, który udowadnia, że metoda ta działa. Teoretycznie – powinna, jednak zastosowanie JavaScriptu może rodzić wątpliwości, czy roboty Google zawsze i w każdym przypadku poradzą sobie z wyrenderowaniem tego fragmentu kodu.

Zarządzanie hreflangami i aspekty techniczne

Wybór metody implementacji

Implementacja hreflangów za pomocą tagów HTML bądź nagłówków HTTP generuje pewną niedogodność, która staje się problemem, gdy mamy więcej, niż kilka wersji językowych. Zwiększa to bowiem liczbę zapytań bazy danych, która musi te linki wygenerować. Dodatkowo, dla 20 wersji językowych kod, potrzebny do poprawnego wdrożenia hreflangów dla pojedynczej podstrony, będzie ważył ok. 1,5 KB. Niby nie dużo, ale prędkość ładowania się strony jest obecnie jednym z czynników rankingowych. Liczy się każda setna sekundy. Praktyczny wniosek jest taki, iż powinniśmy się zawsze trzymać minimalnej, potrzebnej liczby hreflangów.

Dodanie atrybutu hreflang za pomocą mapy witryny, choć to metoda najbardziej “rozwlekła”, wydaje się najlepszym rozwiązaniem dla rozbudowanych, wielojęzykowych stron. Nie obciążamy bowiem kolejnych podstron – co negatywnie wpłynęłoby na ich czas ładowania. Drugim dużym plusem jest prostota – łatwiej wdrażać i zarządzać hreflangami zebranymi w jednym pliku, niż edytować po kolei wszystkie strony witryny.

Kody języka i regionu

Hreflangi umożliwiają nam powiązanie ze sobą treści nie tylko w różnych wersjach językowych, lecz także przygotowanych w tym samym języku lecz dla odbiorców z różnych krajów. Szczególnej uwagi będzie wymagało wdrożenia hreflangów dla strony, która adresowana jest do odbiorców z krajów wielojęzycznych.

Przykładowo: jeżeli nasza strona została przygotowana w języku angielskim, a mamy przygotowane różne wersje podstrony dla odbiorców z USA i z Wielkiej Brytanii, wówczas w pierwszej powinniśmy zastosować kod “en-US”, a w drugiej “en-GB”. Taką stronę mogą jednak odwiedzać anglojęzyczni użytkownicy z Australii, Kanady czy innych krajów. Nie ma potrzeby, by dla każdego kraju precyzować hreflang. Dla wszystkich użytkowników anglojęzycznych można ustawić bowiem dodatkowy wiersz z kodem samego języka “en” i wskazać, która strona ma im zostać wyświetlona.

Inny przykład: Działamy na terenie Szwajcarii, prowadzimy stronę w języku niemieckim i francuskim. Powinniśmy więc posiadać cztery wersje strony:

  • francuskojęzyczną dla Szwajcarii (hreflang=”fr-ch”)
  • niemieckojęzyczną dla Szwajcarii (hreflang=”de-ch”)
  • francuskojęzyczną ogólną (hreflang=”fr”)
  • niemieckojęzyczną ogólną (hreflang=”fr”)

Nie jesteśmy jednak ograniczeni w żaden sposób do języków urzędowych danego regionu. Języki i regiony możemy mieszać ze sobą w dowolny sposób. Jeżeli chcielibyśmy stworzyć podstronę dla użytkowników niemieckojęzycznych we Francji, wówczas mielibyśmy: hreflang=”de-fr”.

W niektórych przypadkach tag języka można rozszerzyć o subtagi, np. Extended Language Tag (klasyfikacja wg. ISO339-3) czy Script (ISO 15924). Taka sytuacja może mieć miejsce np. gdybyśmy mieli stronę w języku uzbeckim zapisanym alfabetem łacińskim. Przykład dobrze pokazuje, jak “często” będziemy się mogli spotkać z taką sytuacją. Na wszelki wypadek można sobie zapisać: “uz-Latn”.

Atrybut x-default

Początkowo wartość x-default w hreflangu miała odsyłać do wersji międzynarodowej strony. Obecnie jednak służy ona temu, by złapać użytkowników, dla których ani język, ani lokalizacja nie są zbieżne z innymi hreflangami. W przykładzie ze stroną z wersjami dla Wielkiej Brytanii i USA teoretycznie moglibyśmy zastąpić “ogólny, anglojęzyczny” URL linkiem z x-default, ponieważ oba i tak wskazywałyby ten sam adres. Lepiej jednak zachować oba, ponieważ link z kodem języka “en” ułatwi prawidłowe zrozumienie kodu crawlerom.

Hreflangi a adresy kanoniczne

Hreflangi nie zastępują w żaden sposób linków kanonicznych. Powinny się one uzupełniać. Ustawienie hreflanga na stronę niekanoniczną sprawi, że hreflang nie będzie działać. Powinniśmy dodać znacznik kanoniczny na każdej podstronie, prowadzący do niej samej. Zatem:

  1. Na stronie: http://mojastrona.com dodajemy:

<link rel=”cannonical” href=”http://mojastrona.com”>
<link rel=”alternate” hreflang=”pl” href=”http://mojastrona.com”>
<link rel=”alternate” hreflang=”en” href=”http://mojastrona.com/en”>
<link rel=”alternate” hreflang=”de” href=”http://mojastrona.com/de”>

  1. Na stronie http://mojastrona.com/en:

<link rel=”cannonical” href=”http://mojastrona.com/en”>
<link rel=”alternate” hreflang=”pl” href=”http://mojastrona.com”>
<link rel=”alternate” hreflang=”en” href=”http://mojastrona.com/en”>
<link rel=”alternate” hreflang=”de” href=”http://mojastrona.com/de”>

  1. A na stronie http://mojastrona.com/de:

<link rel=”cannonical” href=”http://mojastrona.com/de”>
<link rel=”alternate” hreflang=”pl” href=”http://mojastrona.com”>
<link rel=”alternate” hreflang=”en” href=”http://mojastrona.com/en”>
<link rel=”alternate” hreflang=”de” href=”http://mojastrona.com/de”>

Dodatkowo, jeżeli nasza strona posiada osobną wersję mobilną (obecnie np. AMP) i desktopową, potrzebne będą pewne modyfikacje. Na blogu iloveseo.net znajdziemy schemat ilustrujący, jak powinno wyglądać takie wdrożenie, opracowany na podstawie – a jakże by inaczej – twitterowych uwag Johna Muellera.

Zarządzanie hreflangami:

Gdy już uda nam się poprawnie wdrożyć hreflangi, zabawa się nie kończy. Aby nie zmarnować efektów pracy powinniśmy zorganizować proces, który pozwoli się upewnić, że wszystko funkcjonuje poprawnie. Pamiętać należy, że:

  1. gdy usuwamy jakąś podstronę wersji językowej, to powinniśmy także zaktualizować hreflangi pozostałych jej odpowiedników;
  2. jeżeli natomiast ustawiasz na jakiejś podstronie przekierowania, wówczas hreflangi należy ustawić na nowy adres.

Warto też pamiętać, że jeżeli kolejne wersje językowe danej podstrony opublikujemy po tym, jak Google zindeksuje wersję podstawową, na efekt dodania hreflangów musimy poczekać, aż jego crawlery ponownie odwiedzą pierwszą wersję. Dopóki to nie nastąpi, Google będzie widział tylko hreflang prowadzący z tłumaczenia do oryginału, ale już nie powrotny. W przypadku, gdy wdrażamy hreflangi na większej liczbie podstron (lub dla wielu wersji językowych), proces ponownego zindeksowania podstron z dodanymi hreflangami może trochę potrwać. Jak przyśpieszyć aktualizowanie indeksu wyszukiwarki, opisaliśmy we wpisie: Indeksowanie w Google.

Przydatne narzędzia

Aby zająć się tak ogromną działką przyda nam się trochę narzędzi. Jak już padło wcześniej, można się posiłkować Menadżerem Tagów, tak do implementacji, jak i sprawdzania hreflangów. Nie brak jednak narzędzi dedykowanych temu atrybutowi, bądź takich, które posiadają dla niego specjalne moduły.

Hreflang Tags Generator

Generator tagów hreflang

Przy wdrożeniu warto skorzystać z Generatora Tagów Hreflang. Obsługa jest prosta: podajemy adresy wszystkich wersji językowych naszej witryny, wybieramy z listy, w jakim są języku (język “default”, aby wygenerować wiersz z x-default) oraz opcjonalnie region. Zaznaczamy, czy chcemy kod do pliku HTML czy do sitemapy XML i klikamy “Generate the hreflang tags for these urls”. Dużym ułatwieniem jest możliwość wgrania do formularza do 50 adresów za pomocą pliku CSV.

Hreflang Sitemap Tool, Flang

Flang - generowanie hreflangów

No kto by się spodziewał… A jednak szewc chodzi w butach! 🙂

Nieco podobnym narzędziem jest Hreflang Sitemap Tool. Dzięki niemu również wygenerujemy sitemapę z poprawnymi hreflangami na bazie url-i zebranych w pliku .csv. W tym przypadku nie jesteśmy ograniczeni tylko do 50 adresów url, musimy jednak podać w zamian swój adres e-mail. Flang to również bardzo proste narzędzie, które pozwoli nam szybko sprawdzić, czy na danej stronie hreflangi działają poprawnie.

Polylang

Hreflangi - polyang

Dla stron działających w oparciu o WordPressa możemy skorzystać z wtyczki Polylang, która umożliwi nam tłumaczenie wielu różnych elementów strony (łącznie z mediami, kategoriami, tagami, menu nawigacyjnym czy własnymi taksonomiami). Pozwoli również na wprowadzenie hreflangów w sekcji head. Wtyczka jest dostępna bezpłatnie w opcji z ograniczoną funkcjonalnością.

Hej! Chcesz dowiedzieć się więcej o WP? Przeczytaj lub pobierz za darmo nasz raport WordPress w 2021 roku.

OnCrawl

Hreflangi - oncrawl

Jeżeli potrzebujemy natomiast czegoś bardziej zaawansowanego, warto się zainteresować narzędziem OnCrawl. Z jego pomocą będziemy mogli sprawdzać poprawność wdrożenia hreflangów łączących strony na różnych domenach, a także w przypadku wdrożenia tego atrybutu za pomocą nagłówków HTTP czy mapy XML. OnCrawl wykryje także często popełniane błędy w zapisie kodów poszczególnych języków i krajów i zweryfikuje, czy każda z podstron z posiada atrybut hreflang prowadzący do niej samej oraz czy któryś atrybut nie prowadzi do strony, która została wykluczona z indeksowania. A wszystko okraszone przejrzystym interfejsem. Do dyspozycji mamy 14-dniowy darmowy okres próbny, aby sprawdzić, czy chcemy na niego regularnie wydawać pieniądze.

Screaming Frog

Hreflangi - screaming frog

Dość przydatny w analizie poprawności wdrożenia hreflangów będzie Screaming Frog. W bezpłatnej wersji możemy przeskanować do 500 podstron. Program powie nam, na których podstronach brakuje atrybutu hreflang, gdzie brak jest x-default, do jakich podstron odsyłają istniejące hreflangi czy zidentyfikuje najczęściej popełniane błędy. Możemy także sprawdzić, do jakich podstron hreflangi odsyłają. W płatnej wersji nie tylko nie będzie nas ograniczać limit 500 podstron, lecz także program poradzi sobie z hreflangami wdrożonymi poprzez nagłówki HTTP czy sitemapę.

Hreflangi - sprawdzanie w screaming frogLista hreflangów - Screaming Frog

Na co zwrócić szczególną uwagę, czyli najczęstsze błędy:

1.        Błędne kody języka/regionu

Kody języka i regionu składają się tylko z dwóch liter. Często są to skróty wzięte od nazw państw. Łatwo tu o błędy, typu “eng” zamiast “en” lub “UK” zamiast “GB”, czy przestawienie kolejności. Poza tym funkcjonują także inne standardy w kodowaniu języków, np. Facebook posługuje się dość podobnym, z tym że zamiast dywiza (“-”) stosuje podkreślnik (“_”).

2.     Brak hreflanga odsyłającego do bieżącej strony

Skoro Google wszedł na jakąś podstronę i widzi na niej linki z atrybutem hreflang, to będzie wiedział, co jest grane. Kilka sekund pracy mniej – tylko co zrobić z tak zaoszczędzonym czasem?

Oficjalna dokumentacja wyszukiwarki mówi, że odnośnik do samej siebie jest niezbędnym elementem do poprawnej implementacji hreflangów.

3.     Hreflang ustawiony tylko dla jednej wersji strony

Skoro ustawiłem atrybut hreflang na podstronie, pamiętając o linku do bieżącej strony, to wszystko powinno działać poprawnie?

Tylko pod warunkiem, że na oznaczonej w ten sposób podstronie również umieściliśmy taki sam zestaw hreflangów. Biorąc pod uwagę, że możemy w ten sposób łączyć adresy z różnych domen, jest to dość proste, lecz sprytne zabezpieczenie, aby nikt nie podpiął się pod naszą podstronę.

4.     Używanie url-i, których indeksacja została zablokowana, lub które zwracają kod odpowiedzi serwera inny, niż 200

Podobnie jak wyżej – aby atrybut działał poprawnie, wyszukiwarka musi go zobaczyć na obu (wszystkich) powiązanych podstronach. A nie zobaczy, jeżeli nie będzie mogła wyświetlić zawartości jednej z podstron – nie ważne już czy z powodu błędów 4xx lub 5xx, czy z powodu niedopuszczenia GoogleBota do kodu strony.

5.     Hreflang tylko na stronie głównej

Jako przykład zastosowania hreflangów często podaje się adresy strony głównej i jej innych wersji językowych. Może to stwarzać wrażenie, że wystarczy dodać atrybut hreflang tylko na stronie głównej, a wyszukiwarka już sobie powiąże kolejne podstrony.

Hreflang wiąże konkretny adres url z jego odpowiednikami w innych językach i zawsze musi precyzyjnie prowadzić do ich adresów. Gdyby wystarczyło powiązać wersje językowe strony głównej, cóż… zdecydowanie sporo by to uprościło. Jednak nie wystarczy. Podobnie niepoprawne jest łączenie podstron, które nie posiadają własnej wersji alternatywnej ze stroną główną danego języka.

6.     Brak hreflangów dla stron na domenach krajowych.

Cóż, jeżeli mamy stronę na domenie z rozszerzeniem, na przykład, .com, wówczas hreflangi wydają się naturalną koniecznością. Niektórzy zdają się jednak zakładać, że w sytuacji, gdy tłumaczenia strony są umieszczone na domenach krajowych, (np. “.pl”, “.de”, “.fr”), wówczas wyszukiwarka się domyśli, jaką wersję językową wyświetlić w wynikach wyszukiwania.

Czasem to może zadziałać. Jeżeli jednak chcemy prowadzić poważny biznes, to nie będziemy powierzać owoców naszej pracy nadziei, że “robot się domyśli, o co nam chodzi”.

7.      Link kanoniczny prowadzący do domyślnej wersji strony

Skoro nasza strona ma kilka wersji językowych, to prawdopodobnie jedną z nich można uważać za główną vel domyślną. Na pewno dobrym pomysłem będzie ustawienie na nią rel=canonical z pozostałych wersji…

Jest to poważny błąd, który w krótkim czasie spowoduje, że pozostałe wersje językowe znikną z wyników wyszukiwania. Taka praktyka wynika z obawy przed zmorą SEO, czyli duplikacją treści. Jednak hreflang jest wystarczającą informacją dla wyszukiwarki, że powiązane adresy zawierają te same treści, z których powinna ona wyświetlić najbardziej odpowiednią dla użytkownika, biorąc pod uwagę jego ustawienia językowe i lokalizację.

Lista oczywiście nie jest zamknięta. Jeżeli nie masz pewności, czy jakaś praktyka w posługiwaniu się hreflangami jest poprawna, podziel się w komentarzu.

Podsumowanie

Hreflangi mają kilka zawiłości. Wystarczy jednak trzymać się kilku prostych zasad i sukcesywnie je wdrażać, aby osiągnąć poprawny efekt w wynikach wyszukiwania. Wybierz najbardziej adekwatną do twoich potrzeb metodę wdrożenia, z reguły jako znaczniki HTML lub sitemapa XML. Pamiętaj o kompletnym zestawie odnośników do każdej wersji podstrony i wzajemnych powiązaniach podstron, a także o linkach do bieżącego adresu.

Trzymaj się zawsze jak najmniejszej, potrzebnej liczby hreflangów. Dokładnie sprawdź poprawność kodów języków i regionów. Regularnie monitoruj prawidłowe funkcjonowanie atrybutu hreflang, w razie potrzeby wprowadzaj poprawki. Pamiętaj, że istnieją narzędzia, które pozwolą ci nad tym wszystkim zapanować.

Dzięki poprawnemu wdrożeniu tylko tego  jednego elementu optymalizacji strony, jakim jest atrybut hreflang, przebijesz 75% innych witryn na świecie. Chyba warto, nie uważasz?

Autor
Wojciech Urban SEO R&D Specialist
Autor
Wojciech Urban

SEO R&D Specialist

Specjalista R&D w dziedzinie SEO i analityki internetowej. Najlepiej czuje się w obszarze technicznego SEO, a jego głównym zadaniem jest zapewnienie, aby strony internetowe były zoptymalizowane pod kątem wyszukiwarek i osiągały wysokie pozycje w wynikach wyszukiwania.

Autor
Wojciech Urban SEO R&D Specialist
Autor
Wojciech Urban

SEO R&D Specialist

Specjalista R&D w dziedzinie SEO i analityki internetowej. Najlepiej czuje się w obszarze technicznego SEO, a jego głównym zadaniem jest zapewnienie, aby strony internetowe były zoptymalizowane pod kątem wyszukiwarek i osiągały wysokie pozycje w wynikach wyszukiwania.


Warning: Attempt to read property "url" on array in /home/platne/serwer311749/public_html/delante.co/wp-content/themes/delante/inc/config/json-schemas.php on line 127