Meertalige sites:hreflang zonder fouten

hreflang is een regel in de broncode die zoekmachines vertelt welke taalversie van een pagina bij welk publiek hoort. U heeft het nodig zodra dezelfde inhoud in meerdere talen of voor meerdere landen op aparte URL's staat. Drie regels bepalen of het werkt: elke versie verwijst naar alle versies inclusief zichzelf, elke verwijzing is wederkerig en er is één x-default voor bezoekers die in geen van de opgegeven talen passen. hreflang is geen rankingfactor en het stuurt alleen welke versie aan wie getoond wordt. De fout die het vaakst een hele taalmarkt kost zit ergens anders: een taalversie zonder eigen ingang in uw sitemap blijft stil onzichtbaar, ook wanneer de hreflang zelf perfect klopt.

Wanneer u het nodig heeft en wanneer niet

U heeft hreflang nodig in twee gevallen. Het eerste is dat dezelfde pagina in meerdere talen op aparte URL's bestaat, bijvoorbeeld /diensten.html en /en/services.html. Het tweede is dat dezelfde taal twee versies heeft voor twee landen die inhoudelijk verschillen: andere prijzen, andere btw-behandeling.

U heeft het niet nodig bij een site in één taal voor één markt. Ook niet voor een pagina die maar in één taal bestaat.

Er is een derde geval waar het antwoord ongemakkelijk ligt. Wisselt uw site van taal zonder dat de URL verandert, dan is er geen tweede URL om naar te wijzen. Een zoekmachine indexeert één versie van één URL, dus u heeft één taal in de index en de rest bestaat niet. Wilt u vier talen vindbaar hebben, dan heeft u vier URL's nodig. Dat is een bouwbeslissing en geen instelling.

De drie regels die bepalen of het werkt

Zo ziet een volledige set eruit, in de <head> van elke pagina:

<link rel="alternate" hreflang="nl" href="https://uwdomein.be/diensten.html">
<link rel="alternate" hreflang="en" href="https://uwdomein.be/en/services.html">
<link rel="alternate" hreflang="de" href="https://uwdomein.be/de/leistungen.html">
<link rel="alternate" hreflang="fr" href="https://uwdomein.be/fr/services.html">
<link rel="alternate" hreflang="x-default" href="https://uwdomein.be/en/services.html">

Volledig. De set bevat alle versies die bestaan. Vergeet u er één, dan hoort die niet bij de groep.

Met zelfverwijzing. Elke pagina verwijst ook naar zichzelf. Op de Nederlandse pagina staat dus ook de regel met hreflang="nl". Zonder die regel negeert Google de hele set.

Wederkerig. Deze vijf regels staan letterlijk identiek op alle vier de pagina's. Wijst A naar B en wijst B niet terug naar A, dan laat Google het paar vallen. Dit is de meest voorkomende fout en u ziet ze met het blote oog.

Twee bijkomende eisen. Gebruik absolute URL's met protocol en domein, nooit relatieve paden. En laat elke opgegeven URL rechtstreeks laden. Een hreflang die naar een adres wijst dat doorstuurt of dat via een canonical elders uitkomt, wordt genegeerd.

Wat x-default precies is

x-default is niet uw hoofdtaal. Het is de versie voor iedereen die in geen van de opgegeven talen valt: een bezoeker uit Spanje, Japan of Brazilië. In de praktijk kiest u ofwel uw taalkiezer ofwel de breedst bruikbare versie, meestal de Engelse.

Eén per set. Het is niet verplicht. Wel aan te raden, want zonder x-default kiest de zoekmachine zelf en dan wordt het uw hoofdtaal.

Taalcodes met en zonder regio

De taalcode is twee letters uit ISO 639-1: nl, en, de, fr. De regiocode erachter is optioneel, twee letters uit ISO 3166-1 Alpha 2, altijd met een koppelteken ertussen: nl-BE, nl-NL, de-AT, fr-CH. Een regio zonder taal ervoor bestaat niet.

Hier gaat het vaak mis, want de codes voor talen en de codes voor landen lijken op elkaar zonder het te zijn.

Wat er staat Wat het betekent Wat het moest zijn
hreflang="be" Wit-Russisch nl-BE of fr-BE
hreflang="uk" Oekraïens en-GB
hreflang="en-UK" ongeldig en wordt genegeerd en-GB
hreflang="nl_BE" ongeldig, lage streep in plaats van koppelteken nl-BE
hreflang="eu" Baskisch geen code dekt de EU, kies per taal

Splits nl-BE en nl-NL alleen wanneer de inhoud echt verschilt. Heeft u één Nederlandstalige pagina voor beide landen, gebruik dan gewoon nl. Die code dekt alle Nederlandstaligen waar ze ook zitten. Twee identieke pagina's onder twee regiocodes splitsen uw signalen en verdubbelen uw onderhoud.

De regiocode stuurt op de vermoedelijke locatie van de bezoeker en niet op zijn taalinstelling. nl-BE betekent Nederlandstaligen in België.

Waar u het zet: kies één plaats

  1. <link>-elementen in de <head>. Het meest gebruikt en het makkelijkst te controleren, want u ziet het in de broncode.
  2. Een Link:-HTTP-header. Nodig voor bestanden zonder head, zoals een PDF.
  3. In de XML-sitemap. Het beste voor grote sites, want u onderhoudt alles op één plaats in plaats van op elke pagina.

Kies er één. Twee methodes naast elkaar die elkaar tegenspreken is erger dan geen enkele.

In de sitemap ziet het er zo uit. De namespace xmlns:xhtml hoort op <urlset>:

<url>
  <loc>https://uwdomein.be/diensten.html</loc>
  <xhtml:link rel="alternate" hreflang="nl" href="https://uwdomein.be/diensten.html"/>
  <xhtml:link rel="alternate" hreflang="en" href="https://uwdomein.be/en/services.html"/>
  <xhtml:link rel="alternate" hreflang="x-default" href="https://uwdomein.be/en/services.html"/>
</url>

De taalversie zonder eigen ingang blijft stil onzichtbaar

Dit is het deel dat een hele markt kost en dat niemand opmerkt.

Een zoekmachine vindt een pagina langs drie wegen: een gewone link met een href erin, een ingang in uw sitemap of een hreflang-verwijzing vanaf een pagina die ze al kent. Vallen die drie weg, dan bestaat de pagina niet.

Het scenario dat we het vaakst zien gaat zo. De taalkiezer bovenaan is een menu in JavaScript dat geen echte link oplevert. De sitemap wordt gegenereerd op basis van de hoofdtaal en bevat dus alleen Nederlandse URL's. De Duitse en Franse pagina's staan gewoon op de server. Niemand wijst ernaar.

Het gemene is dat niets alarm slaat. Search Console meldt geen fout, want een URL die Google nooit ontdekt heeft kan ook geen fout opleveren. Uw statistieken tonen geen daling, want er was nooit verkeer. De pagina's bestaan, de vertaalfactuur is betaald en de markt blijft leeg.

Twee controles van elk een minuut:

  • Typ site:uwdomein.be/de/ in Google. Nul resultaten betekent nul geïndexeerde Duitse pagina's.
  • Open in Search Console het onderdeel Sitemaps en kijk naar het aantal ontdekte URL's. Een site van 20 pagina's in vier talen hoort daar ongeveer 80 URL's te tonen. Staat er 20, dan heeft u één taal in de index en drie onzichtbare.

Pagina's maal talen. Dat is de bruikbaarste vuistregel uit dit hoofdstuk. Wijkt het getal sterk af, dan zoekt u niet naar hreflang-fouten maar naar ontbrekende URL's.

Eén laatste val, direct daarna. Een canonical van /de/diensten.html naar /diensten.html haalt uw Duitse pagina uit de index, hoeveel hreflang u er ook omheen zet. Elke taalversie krijgt een canonical die naar zichzelf wijst. Zie hoofdstuk 1.

Wat hreflang niet doet

Het verhoogt geen posities. hreflang bepaalt welke versie iemand te zien krijgt en niet op welke plaats. Het is bovendien een aanwijzing en geen bevel: Google mag een andere versie tonen wanneer die beter bij de zoekopdracht past.

Het lost ook geen dubbele inhoud op tussen talen. Dat probleem bestaat niet, want een vertaling is geen kopie.

Google, Bing en Yandex gebruiken hreflang. Of de systemen achter AI-antwoorden er iets mee doen is niet gedocumenteerd en wij hebben het niet gemeten. Voor GEO telt iets anders: elke taal een eigen URL met echte tekst in de server-HTML. Zie hoofdstuk 6 en hoofdstuk 7.

Zelf controleren, zonder betaald gereedschap

Search Console meldt hreflang-fouten niet als aparte categorie. U controleert dus zelf. De handmatige test duurt twee minuten en vangt de meeste fouten:

  1. Open een pagina en druk Ctrl+U of Cmd+Option+U.
  2. Zoek op hreflang en noteer de set.
  3. Open één van de opgesomde URL's en herhaal stap 2.
  4. Staat daar exact dezelfde set inclusief de zelfverwijzing, dan is de wederkerigheid in orde.
  5. Controleer dat elke URL rechtstreeks laadt zonder omleiding.

Daarnaast bestaan er gratis hreflang-controleurs die uw site doorlopen en de niet-wederkerige paren op een rij zetten. Nuttig vanaf een stuk of twintig pagina's. We noemen er geen bij naam, omdat zulke lijstjes verouderen.

Wat u zelf kan en wat niet

Zelf te doen, zonder ontwikkelaar:

  • De handmatige wederkerigheidstest op uw vijf belangrijkste pagina's.
  • Taalcodes nakijken op be, uk en en-UK. Dit alleen al lost een verrassend deel van de gevallen op.
  • Een x-default toevoegen als die ontbreekt.
  • Tellen hoeveel URL's uw sitemap bevat en dat afzetten tegen pagina's maal talen.
  • Controleren dat elke taalversie een canonical naar zichzelf heeft.

Waarvoor u hulp nodig heeft:

  • Een taalkiezer die geen echte links produceert. Dat is een bouwbeslissing en geen vinkje.
  • Een CMS dat per taal een aparte sitemap maakt zonder index die ze samenbrengt.
  • Vier talen over honderden pagina's, waar hreflang uit de sitemap moet komen in plaats van uit de head van elke pagina.
  • Een omleiding op basis van het land van de bezoeker. Die duwt de crawler telkens naar dezelfde versie, waardoor de rest nooit gelezen wordt.

Reken op een halve dag voor een site van twintig pagina's in vier talen, inclusief het nakijken achteraf. Dit hoofdstuk is klein. Wie het fout heeft verliest wel een hele taalmarkt zonder het te zien.

Veelgestelde vragen

Wat is hreflang en heb ik het nodig?

hreflang is een regel in de broncode die zoekmachines vertelt welke taalversie van een pagina bij welk publiek hoort. U heeft het nodig zodra dezelfde inhoud in meerdere talen op aparte URL's staat. Bij een site in één taal voor één markt heeft het geen enkel nut.

Wat betekent x-default in hreflang?

Het is de versie die getoond wordt aan bezoekers die in geen van de opgegeven talen of regio's vallen, bijvoorbeeld iemand uit Japan of Brazilië. Het is niet hetzelfde als uw hoofdtaal. U geeft er één op per set en in de praktijk wijst die naar uw taalkiezer of naar de Engelse versie.

Moet ik nl-BE en nl-NL apart opgeven?

Alleen wanneer de twee pagina's inhoudelijk echt verschillen, bijvoorbeeld door andere prijzen of andere leveringsvoorwaarden. Is de tekst identiek, gebruik dan gewoon nl. Die code dekt alle Nederlandstaligen en u vermijdt dubbel onderhoud.

Waarom werkt mijn hreflang niet?

In de meeste gevallen ontbreekt de wederkerigheid: pagina A verwijst naar B en B verwijst niet terug naar A, waarna Google het paar laat vallen. Andere veelvoorkomende oorzaken zijn een ontbrekende zelfverwijzing, een foute taalcode zoals be of en-UK en een opgegeven URL die doorstuurt in plaats van rechtstreeks te laden.

Is hreflang een rankingfactor?

Nee. hreflang bepaalt welke taalversie iemand te zien krijgt en niet op welke positie u staat. Het is bovendien een aanwijzing en geen bevel: Google mag een andere versie tonen wanneer het denkt dat die beter past.

Wenst u dit niet zelf te doen: SEMANU voert de volledige SEO- en GEO-audit uit voor 1.450 euro, inclusief rapport en werksessie. Wat erin zit staat op de gidspagina.

Meetbaarheid en vindbaarheid horen in uw softwarestrategie

Meetbaarheid en vindbaarheid zijn onderdeel van strategisch advies en geen aparte discipline. Wilt u dit niet zelf doen, dan nemen we het op in de softwarestrategie: wat u meet, welke drempel een handeling rechtvaardigt en wie het opvolgt.