Przekazywanie Google informacji o zlokalizowanych wersjach strony
Jeśli masz wiele wersji strony dla różnych języków lub regionów, przekaż Google informacje na ten temat. Dzięki temu wyszukiwarka Google skieruje użytkowników do najodpowiedniejszej wersji strony na podstawie języka lub regionu.
Nawet jeśli nie podejmiesz żadnych działań, Google nadal będzie w stanie znaleźć alternatywną wersję językową strony. Zazwyczaj jednak najlepszym rozwiązaniem jest wyraźne wskazanie stron w określonych językach lub przeznaczonych dla konkretnych regionów.
Przykładowe sytuacje, w których zalecamy wskazanie alternatywnych wersji stron:
- Prezentujesz główną treść w jednym języku, a tłumaczysz tylko szablon, np. elementy nawigacyjne i stopkę. Jest to typowa sytuacja w przypadku stron z treściami użytkowników, takimi jak posty.
- Materiały na Twojej stronie charakteryzują niewielkie różnice regionalne, a treści w obrębie jednego języka są podobne. Na przykład możesz mieć treści w języku angielskim skierowane do użytkowników z USA, Wielkiej Brytanii i Irlandii.
- Zawartość Twojej witryny jest w całości przetłumaczona na wiele języków. Na przykład masz niemiecką i angielską wersję każdej strony.
Zlokalizowane wersje strony są uznawane za duplikaty tylko wtedy, gdy główna treść strony pozostaje nieprzetłumaczona.
Metody wskazywania stron alternatywnych
Wielojęzyczne lub multiregionalne wersje strony możesz wskazać Google na 3 sposoby:
Użyj hreflang
, by poinformować Google o odmianach Twoich treści. Dzięki temu będziemy wiedzieć, że te strony zawierają zlokalizowane wersje tych samych treści. Google nie używa tagu hreflang
ani atrybutu HTML lang
do wykrywania języka strony. Aby określić język, używamy algorytmów.
Wytyczne dotyczące wszystkich metod
- Każda wersja językowa musi uwzględniać siebie oraz wszystkie inne wersje językowe.
- Alternatywne adresy URL muszą być pełne i jednoznaczne, a także muszą obejmować metodę przesyłania (http/https), czyli na przykład:
https://example.com/foo
, a nie//example.com/foo
czy/foo
- Alternatywne adresy URL nie muszą należeć do tej samej domeny.
-
Jeśli masz kilka różnych adresów URL w tym samym języku, ale przeznaczonych dla różnych regionów, warto utworzyć jeden adres typu catch-all dla użytkowników z nieokreślonych lokalizacji. Możesz na przykład przygotować osobne adresy URL dla anglojęzycznych użytkowników z Irlandii (
en-ie
), Kanady (en-ca
) i Australii (en-au
), a innych anglojęzycznych użytkowników z Wielkiej Brytanii, Stanów Zjednoczonych oraz pozostałych lokalizacji kierować na ogólną angielską wersję strony (en
). Może to być jedna z określonych wersji strony. - Jeśli dwie strony nie wskazują na siebie nawzajem, tagi zostaną zignorowane. Dzięki temu nikt nie może w innej witrynie utworzyć tagu wskazującego na dowolną stronę jako alternatywną wersję jednej z Twoich stron.
- Jeśli utrzymanie pełnego zestawu dwukierunkowych linków dotyczących poszczególnych języków zaczyna sprawiać trudności, możesz część z nich pominąć na niektórych stronach. Google przetworzy te, które wskazują wzajemnie na siebie. Pamiętaj jednak o dwukierunkowym powiązaniu stron utworzonych w nieobsługiwanych wcześniej językach z oryginalną/przeważającą wersją językową. Jeśli na przykład językiem oryginalnej strony jest francuski, a jej adresy URL występują w domenie
.fr
, to w takim przypadku konieczne jest dwukierunkowe powiązanie nowszych stron w wersji meksykańskiej (.mx
) i hiszpańskiej (.es
) z dominującą wersją w domenie.fr
zamiast dwukierunkowego łączenia ze sobą nowych stron napisanych w odmianach języka hiszpańskiego (.mx
i.es
). - Warto dodać stronę zastępczą na potrzeby języków bez dopasowania, szczególnie w przypadku stron głównych z możliwością wyboru wersji językowej / kraju lub automatycznym przekierowaniem. Użyj wartości
x-default
:
<link rel="alternate" href="https://example.com/" hreflang="x-default" />
Tagi HTML
Dodaj elementy <link rel="alternate" hreflang="lang_code"... >
w nagłówku strony, aby wskazać Google wszystkie jej wersje językowe i regionalne. Takie rozwiązanie jest przydatne, jeśli nie masz mapy witryny ani możliwości określenia w swojej witrynie nagłówków odpowiedzi HTTP.
W przypadku każdej wersji strony uwzględnij zestaw elementów <link>
w elemencie <head>
– po 1 linku dla każdej wersji, w tym dla danej strony. Zestaw linków jest identyczny dla każdej wersji strony.
Zobacz dodatkowe wytyczne
Oto składnia poszczególnych elementów link
:
<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Składnia | |
---|---|
lang_code |
Obsługiwany kod języka/regionu, na który jest kierowana określona wersja strony, lub parametr x-default odpowiadający każdemu językowi, który nie jest wyraźnie wymieniony w tagu hreflang na stronie. |
url_of_page |
Pełny URL konkretnej wersji strony w danym języku lub przeznaczonej do wyświetlania w określonym regionie. |
Umieść tagi <link>
w górnej części elementu <head>
. Tagi <link>
muszą znaleźć się co najmniej wewnątrz poprawnie sformatowanej sekcji <head>
lub przed elementami, które mogłyby spowodować przedwczesne zamknięcie sekcji <head>
, takimi jak <p>
czy piksel śledzący. Jeśli masz wątpliwości, wklej kod z renderowanej strony do narzędzia do sprawdzania stron HTML, aby upewnić się, że linki są umieszczone wewnątrz elementu <head>
.
Przykład
Firma Example Widgets, Inc. ma witrynę przeznaczoną dla użytkowników ze Stanów Zjednoczonych, Wielkiej Brytanii i Niemiec. Następujące adresy URL zawierają zasadniczo tę samą treść, ale z pewnymi regionalnymi różnicami:
Adresy URL z odmianami regionalnymi | |
---|---|
https://en.example.com/page.html |
Ogólna strona główna w języku angielskim, która zawiera informacje o opłatach za dostawę międzynarodową ze Stanów Zjednoczonych. |
https://en-gb.example.com/page.html |
Brytyjska strona główna z cenami w funtach. |
https://en-us.example.com/page.html |
Amerykańska strona główna z cenami w dolarach amerykańskich. |
https://de.example.com/page.html |
Strona główna w języku niemieckim. |
https://www.example.com/ |
Strona domyślna bez określonego języka i regionu. Zawiera selektory umożliwiające wybór tych opcji. |
Zauważ, że do określania docelowych odbiorców strony Google nie używa subdomen w określonych językach (en
, en-gb
, en-us
, de
) zawartych w tych adresach URL. Musisz dokładnie zmapować tych docelowych odbiorców.
Poniżej widać kod HTML, który powinien znajdować się w sekcji <head>
na wszystkich stronach wymienionych w tabeli adresów URL z odmianami regionalnymi. Skieruje on użytkowników anglojęzycznych z USA i Wielkiej Brytanii oraz użytkowników niemieckojęzycznych na zlokalizowane strony, a wszystkich pozostałych odbiorców odeśle na ogólną stronę główną. Wyszukiwarka Google zwróci wynik odpowiedni dla użytkownika na podstawie ustawień przeglądarki.
<head> <title>Widgets, Inc</title> <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/page.html" /> <link rel="alternate" hreflang="en-us" href="https://en-us.example.com/page.html" /> <link rel="alternate" hreflang="en" href="https://en.example.com/page.html" /> <link rel="alternate" hreflang="de" href="https://de.example.com/page.html" /> <link rel="alternate" hreflang="x-default" href="https://www.example.com/" /> </head>
Nagłówki HTTP
Możesz zwrócić nagłówek HTTP razem z odpowiedzią GET strony, by przekazać Google informacje o wszystkich jej wersjach językowych i regionalnych. Jest to przydatne w przypadku plików w formacie innym niż HTML (np. PDF).
Oto format nagłówka:
Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Składnia | |
---|---|
<url_x> |
Pełny adres URL strony alternatywnej, która odpowiada ciągowi ustawień regionalnych przypisanemu do powiązanego atrybutu hreflang . Adres URL musi zawierać otaczające go znaczniki < i > . Przykład: <https://www.google.com> |
lang_code_x |
Obsługiwany kod języka/regionu, na który jest kierowana określona wersja strony, lub parametr x-default odpowiadający każdemu językowi, który nie jest wyraźnie wymieniony w tagu hreflang na stronie. |
Musisz określić zestaw parametrów <url>
i rel="alternate"
oraz wartości hreflang
dla każdej wersji strony, łącznie z wersją żądaną. Trzeba je rozdzielić przecinkami jak w poniższym przykładzie. Nagłówki Link:
zwracane w przypadku poszczególnych wersji strony są identyczne. Zobacz dodatkowe wytyczne
Przykład
Oto przykład nagłówka Link:
zwracanego przez witrynę zawierającą 3 wersje pliku PDF: jedną dla użytkowników anglojęzycznych, jedną dla użytkowników niemieckojęzycznych ze Szwajcarii i jedną dla wszystkich pozostałych użytkowników niemieckojęzycznych:
Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en", <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch", <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"
Mapa witryny
Aby wskazać Google wszystkie warianty językowe i regionalne poszczególnych adresów URL, możesz użyć mapy witryny. W tym celu dodaj element <loc>
określający pojedynczy adres URL z wpisami podrzędnymi <xhtml:link>
definiującymi poszczególne wersje językowe lub regionalne strony łącznie z wersją, w której dodajesz wpisy. Jeśli więc masz 3 wersje strony, Twoja mapa witryny będzie zawierała 3 wpisy – każdy z 3 identycznymi wpisami podrzędnymi.
Reguły dotyczące mapy witryny:
-
Określ przestrzeń nazw xhtml w ten sposób:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
-
Dla każdego adresu URL utwórz osobny element
<url>
, tak jak w przypadku każdej innej mapy witryny. - Każdy element
<url>
musi zawierać element podrzędny<loc>
wskazujący adres URL strony. -
Każdy element
<url>
musi zawierać element podrzędny<xhtml:link rel="alternate" hreflang="supported_language-code">
zawierający wszystkie alternatywne wersje strony, łącznie z wersją, w której dodajesz te elementy. Kolejność elementów podrzędnych<xhtml:link>
nie ma znaczenia, ale warto jej nie zmieniać, by ułatwić wykrywanie błędów. - Prześlij mapę witryny do katalogu w witrynie, którego ta mapa witryny dotyczy. Pamiętaj, że mapa witryny może zawierać tylko podrzędne adresy URL katalogu, w którym jest ona przechowywana. Więcej informacji znajdziesz w ogólnych wskazówkach dotyczących map witryn.
- Zobacz dodatkowe wytyczne
Przykład
To jest przykład strony anglojęzycznej przeznaczonej dla użytkowników z całego świata mówiących po angielsku. Ma ona równoważne wersje przeznaczone dla użytkowników z całego świata mówiących po niemiecku oraz użytkowników niemieckojęzycznych ze Szwajcarii. W witrynie znajdą się wszystkie te adresy URL:
www.example.com/english/page.html
kierowany na użytkowników anglojęzycznych,www.example.de/deutsch/page.html
kierowany na użytkowników niemieckojęzycznych,www.example.de/schweiz-deutsch/page.html
kierowany na użytkowników niemieckojęzycznych w Szwajcarii.
Mapa witryny obejmująca te 3 strony wygląda tak:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>https://www.example.com/english/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.de/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> <url> <loc>https://www.example.de/deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.de/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> <url> <loc>https://www.example.de/schweiz-deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> </urlset>
Obsługiwane kody języków/regionów
Wartość atrybutu hreflang
wskazuje język (w formacie ISO 639-1) oraz opcjonalnie region (w formacie ISO 3166-1 alfa 2) alternatywnego adresu URL. Jeśli określono tylko 1 kod, Google zakłada, że jest to kod języka. Język nie musi być powiązany z regionem, np.:
de
: materiały w języku niemieckim, niezależnie od regionu;en-GB
: materiały w języku angielskim dla użytkowników z Wielkiej Brytanii;de-ES
: materiały w języku niemieckim dla użytkowników z Hiszpanii.
W przypadku różnic w rodzajach pisma używanych przez dany język właściwy rodzaj pisma jest wybierany na podstawie kraju. Na przykład użycie kodu zh-TW
na stronie przeznaczonej dla użytkowników na Tajwanie spowoduje automatyczny wybór pisma chińskiego (w tym przypadku tradycyjnego). Możesz również wyraźnie określić alfabet w formacie ISO 15924, na przykład:
zh-Hant
: chiński (tradycyjny),zh-Hans
: chiński (uproszczony).
Podobnie jak w przypadku innych kodów języków możesz też określić region. Użyj na przykład zh-Hans-US
, aby określić język chiński (uproszczony) dla użytkowników z USA.
Używanie wartości x-default
w przypadku języków bez dopasowania
Zarezerwowana wartość x-default
jest wykorzystywana wtedy, gdy żaden język ani region nie odpowiada ustawieniom przeglądarki użytkownika. Jest to wartość opcjonalna, ale zalecana jako sposób kontrolowania strony, gdy nie można dopasować żadnych języków. Warto ustawić kierowanie na stronę główną witryny z interaktywną mapą, która umożliwia wybór kraju użytkownika.
W przypadku wartości x-default
nie trzeba określać kodu języka. Strona jest kierowana do użytkowników, których ustawienia języka nie są zgodne z Twoją witryną, więc język strony nie ma znaczenia.
Aby zaimplementować adnotację hreflang="x-default"
, dodaj kolejny tag link
do istniejących adnotacji hreflang
i ustaw atrybut href
na adres URL, pod który mają trafiać użytkownicy, jeśli Twoja witryna nie obsługuje danego języka. Implementacja HTML może wyglądać np. tak:
<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" /> <link rel="alternate" href="https://example.com/en-us" hreflang="en-us" /> <link rel="alternate" href="https://example.com/en-au" hreflang="en-au" /> <link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />
Rozwiązywanie problemów
Typowe błędy
Oto najczęstsze błędy związane z użyciem parametru hreflang
:
-
Brak linków zwrotnych: jeśli strona X zawiera link do strony Y, strona Y musi zawierać link zwrotny do strony X. Jeśli nie będzie tak w przypadku niektórych stron, które korzystają z adnotacji
hreflang
, adnotacje mogą zostać zignorowane lub nieprawidłowo zinterpretowane. Weźmy na przykład ten link nahttps://de.example.com/index.html
:<link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
Musisz też mieć też linkhreflang
nahttps://en-gb.example.com/index.html
, który wskazuje wersję treścide
:<link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
- Nieprawidłowe kody języka: u pewnij się, że wszystkie używane kody języka wskazują na język (w formacie ISO 639-1), a opcjonalnie także region (w formacie ISO 3166-1 alfa-2) alternatywnego adresu URL. Określenie jedynie regionu jest nieprawidłowe.
Debugowanie błędów w tagu hreflang
Do debugowania adnotacji hreflang
można wykorzystać różne narzędzia innych firm. Oto kilka najpopularniejszych. Google ich nie obsługuje ani nie sprawdza.
-
Narzędzie Aleydy Solis do generowania tagów
hreflang
służy do generowania lub modyfikowania tagówhreflang
. -
Narzędzie Merkle SEO do testowania tagów hreflang służy do sprawdzania tagów
hreflang
na pojedynczej opublikowanej stronie.