W sklepie wielojęzycznym ta sama karta produktu istnieje w pięciu wersjach. Bez wskazówki wyszukiwarka widzi pięć podobnych stron, wybiera jedną na zapytanie i może spokojnie podać wersję hiszpańską niemieckiemu odwiedzającemu. Znaczniki hreflang istnieją po to, żeby temu zapobiec.
Są źle rozumiane, często źle wystawione, a PrestaShop nie generuje ich natywnie w pełni.
Co hreflang robi, a czego nie
Użyteczne doprecyzowanie przed jakąkolwiek konfiguracją. Hreflang nie podnosi strony w wynikach. To sygnał dopasowania, nie jakości.
Co daje konkretnie: wskazuje, którą wersję podać zależnie od języka i regionu odwiedzającego, oraz grupuje wersje ze sobą, żeby nie konkurowały. Niemiecka strona dobrze notowana w Niemczech zachowuje pozycję, a odwiedzający z Francji dostaje wersję francuską zamiast tej samej strony po niemiecku.
W serwisie, którego wszystkie wersje są w tym samym języku, na przykład niemiecki dla Niemiec i niemiecki dla Austrii, hreflang jest jedynym sposobem, by pokazać, do jakiej publiczności każda z nich się zwraca.
Trzy zasady bezwzględne
Wdrożenie hreflang jest poprawne albo nie jest. Nie ma półśrodków, a trzy zasady warunkują wszystko.
- Wzajemność. Jeśli strona francuska wskazuje na niemiecką, niemiecka musi wskazywać na francuską. Odwołanie niewzajemne jest ignorowane. To pierwsza przyczyna niepowodzeń.
- Samoodwołanie. Każda strona musi zadeklarować samą siebie na liście. Strona francuska wymieniająca tylko niemiecki i hiszpański jest niekompletna.
- Spójność ze znacznikiem kanonicznym. Każda strona musi mieć kanoniczny wskazujący na nią samą. Kanoniczny wskazujący na inną wersję unicestwia cały układ, bo mówi wyszukiwarce, że ta strona nie jest właściwa.
Dodajmy ograniczenie formatu: kod języka według normy ISO 639-1, opcjonalny kod kraju według ISO 3166-1. „pl” jest poprawne, „pl-PL” też, „pl-pl” jest tolerowane, ale „pl-EU” nie, bo Unia Europejska nie jest krajem.
Język albo język plus kraj
Wybór strukturalny zależny od twojego modelu.
Jeśli sprzedajesz ten sam katalog na tych samych warunkach wszystkim niemieckojęzycznym, wystarczy zwykłe „de”. Jeśli masz sklep niemiecki i austriacki z innymi cenami i kosztami wysyłki, potrzebujesz „de-DE” i „de-AT”.
Drugi przypadek jest mocniejszy i bardziej kruchy: zwielokrotnia liczbę relacji do utrzymania. Trzy języki i cztery kraje dają dwanaście wersji, czyli sto trzydzieści dwie wzajemne relacje do utrzymania w porządku.
Moduł hreflang dla PrestaShop 8: znaczniki alternate w wielojęzycznym SEOPoprawne znaczniki hreflang na wszystkich stronach PrestaShop 8: natywne przetłumaczone adresy URL, x-default, grupy multistore i ponad 70 kodów hreflang.€29,00
Gdzie umieścić znaczniki
Trzy możliwe miejsca, jedno wystarczy i nie należy ich mieszać.
W nagłówku HTML strony. Najczęstsze, najłatwiejsze do sprawdzenia i najbardziej obciążające, gdy masz dwanaście wersji: dwanaście dodatkowych linii na każdej stronie.
W mapie witryny XML. Lżejsze po stronie strony i praktyczne przy dużej liczbie wersji. W zamian błąd jest mniej widoczny, a plik rośnie.
W nagłówkach HTTP. Zarezerwowane dla plików innych niż HTML, typowo wielojęzycznych PDFów.
Znacznik x-default
Wskazuje stronę do podania, gdy żadna wersja nie odpowiada językowi odwiedzającego. Odwiedzający z Japonii w serwisie francuskim, angielskim i niemieckim musi gdzieś wylądować.
Dwa poprawne zastosowania: wskazywać wersję angielską albo stronę wyboru kraju. Zastosowanie niepoprawne i częste: wskazywać wersję francuską, deklarując ją zarazem jako „fr”. Strona może łączyć obie role, ale deklaracja musi być wyraźna.
Najczęstsze błędy
- Hreflang do strony nieprzetłumaczonej. Karta istnieje w przełączniku języków, ale jej treść została w języku wyjściowym. Wyszukiwarka stwierdza, że obie strony są identyczne, i przestaje ufać całości deklaracji.
- Hreflang do przekierowania. Zadeklarowany adres zwraca kod 301. Odwołanie jest ignorowane.
- Hreflang do strony zablokowanej. Adres jest zabroniony w pliku robots albo nosi znacznik noindex. Bezpośrednia sprzeczność.
- Deklaracja częściowa. Objęte są tylko strony główne, a nie karty ani kategorie. To przypadek najbardziej rozpowszechniony i nie daje właściwie nic.
- Produkty wyłączone w jednym języku. Pozycja sprzedawana w Polsce, ale nie w Hiszpanii, łamie wzajemność, jeśli deklaracja nadal wskazuje nieistniejącą stronę.
Przypadek PrestaShop
Współistnieją dwie architektury i nie wymagają tego samego traktowania.
Przy prostej wielojęzyczności, jeden sklep i kilka języków, adresy różnią się prefiksem języka. Relacje łatwo ustalić, bo każdy produkt ma jeden identyfikator wspólny wszystkim swoim tłumaczeniom.
Przy wielosklepie, jeden sklep na kraj z odrębnymi domenami, odpowiedniość przestaje być automatyczna. Produkt może mieć różne identyfikatory w różnych sklepach albo istnieć w jednym i nie istnieć w drugim. To tam generowanie ręczne staje się niewykonalne.
Kontrola
Trzy weryfikacje, w tej kolejności. Kod źródłowy karty produktu, żeby zobaczyć faktycznie obecne znaczniki. Raport kierowania międzynarodowego w Search Console, który zgłasza błędy wzajemności i nieprawidłowe kody. Oraz kontrola próbki na około dwudziestu losowo wybranych stronach, bo błędy rzadko skupiają się na stronie głównej.
Moduł Hreflang dla PrestaShop generuje te znaczniki automatycznie w PrestaShop 8 i 9: objęcie wszystkich stron, a nie tylko głównej, obsługa wielosklepu i odpowiedniości między domenami, konfigurowalny x-default oraz wykluczenie produktów niedostępnych w danej wersji.