<!-- Pe pagina de pe site.ro/produs-x -->
<link rel="alternate" hreflang="ro" href="https://site.ro/produs-x" />
<link rel="alternate" hreflang="en" href="https://site.com/product-x" />
<link rel="alternate" hreflang="x-default" href="https://site.com/product-x" />Am văzut prea multe implementări de hreflang făcute după ureche care au distrus SEO-ul internațional după migrare sau lansare. Dacă ai un site pe .ro pentru România și un .com în engleză pentru restul lumii, maparea corectă îți salvează indexarea în Google. Hai să vedem cum o faci tehnic, fără să te lovești de erori stupide în Search Console.
De ce ne batem capul cu asta?
La un magazin online cu vreo 12k de produse pe care l-am mutat anul trecut de pe o structură exclusiv românească pe un sistem hibrid cu .ro și .com, am pățit-o. În prima lună, traficul organic pe .ro a scăzut cu 25% pentru că Google începuse să indexeze paginile în engleză de pe .com pentru utilizatorii din București. Clasic.
Problema e simplă: roboții Google erau confuzi. Fără semnale clare, algoritmul alege versiunea care i se pare lui mai relevantă în momentul respectiv, iar de multe ori dă gherle. Tagul hreflang rezolvă fix asta. Îi spune motorului de căutare: "Dacă userul e din România, arată-i pagina asta; dacă e din altă parte, arată-i varianta de pe .com".
Regula de aur: Reciprocitatea
Cea mai mare greșeală pe care o văd în producție este lipsa reciprocității. Dacă pagina A de pe .ro trimite către pagina B de pe .com, atunci și pagina B trebuie neapărat să trimită înapoi către pagina A. Dacă legătura e doar într-o singură direcție, Google va ignora complet tag-urile. E ca și cum nu le-ai avea.
Un alt detaliu care scapă multora este tag-ul auto-referențial. Fiecare pagină trebuie să se includă și pe ea însăși în lista de taguri hreflang din header.
Implementare în HTML vs Sitemap XML
Aici avem un trade-off destul de clar.
Injectarea tag-urilor direct în HTML (în tagul <head>) este cea mai simplă metodă de implementat, mai ales dacă lucrezi cu un CMS clasic. Totuși, dacă ajungi să ai 10-15 limbi/regiuni diferite, adaugi vreo 2-3KB de cod inutil pe fiecare pagină doar cu aceste legături. La un volum mare de trafic, asta înseamnă lățime de bandă irosită degeaba.
Pentru scenariul nostru cu .ro și .com (global), varianta în HTML este perfectă și extrem de ușor de debugat.
Cum verifici că funcționează corect?
Nu te baza niciodată pe simplul "am dat view-source și pare ok".
Eu folosesc Screaming Frog pentru auditul ăsta. Îi dai să scaneze ambele domenii în același timp și verifici tab-ul de "Hreflang". Îți va arăta instant dacă ai tag-uri care duc spre pagini cu erori 404, dacă îți lipsesc tag-urile de întoarcere (no return tags) sau dacă ai folosit coduri de limbă greșite (cum ar fi en-UK în loc de en-GB).
O altă metodă rapidă și gratuită e să folosești un validator online precum cel de la TechnicalSEO. Introduci URL-ul și vezi imediat dacă structura e validată. În Google Search Console durează adesea câteva zile sau chiar săptămâni până când vezi erorile raportate oficial, așa că e bine să fii proactiv.
Voi cum gestionați tag-urile astea la proiectele mari? Le generați dinamic în sitemap-ul XML sau preferați să le lăsați în head-ul paginii?