blog·4 min lezen

Je uitklapmenu verbergt pagina's voor Google

Een nieuwe pagina stond elf dagen live en was nog steeds onbekend bij Google. Niet door een robots-regel of een sitemap, maar doordat de enige link ernaartoe in een menu zat dat pas na JavaScript bestaat.

Haal de homepage van deze website op zoals de server hem uitlevert, zonder
JavaScript, en geef me de lijst met interne links die erin staan.

In september zetten we een nieuwe instappagina live op onze eigen site. Netjes gedaan: eigen tekst, in de sitemap, indexeerbaar, server-side gerenderd, snel. Elf dagen later vroegen we in Search Console op hoe hij ervoor stond. Het antwoord: de URL is onbekend bij Google.

Niet "gecrawld maar niet geïndexeerd". Niet "ontdekt". Onbekend. Google had de pagina nog nooit gezien.

Wat er niet aan de hand was

Eerst de verdachten die het niet waren, want die kost je het minste tijd om uit te sluiten.

De pagina stond in de sitemap. De sitemap was opgehaald. Er stond geen noindex op, geen regel in robots.txt, geen canonical die naar iets anders wees. De pagina gaf een 200 en leverde complete HTML uit vanaf de server, dus er was geen leeg scherm waar een crawler niets mee kon.

En één detail dat ons op het spoor zette: de Engelse versie van dezelfde pagina was wél geïndexeerd. Zelfde opbouw, zelfde sitemap, ander resultaat.

Wat er wel aan de hand was

Onze navigatie is een uitklapmenu. Dat menu is een onderdeel dat in de browser wordt opgebouwd: de links erin bestaan pas nadat JavaScript heeft gedraaid. In de HTML die de server uitlevert, staan ze niet.

En die nieuwe pagina was alleen vanuit dat menu gelinkt. Nergens anders op de site stond een link ernaartoe. Dus voor iets dat de HTML van de server leest, bestond er geen enkele verwijzing naar die pagina. Alleen een regel in de sitemap.

Google kan JavaScript uitvoeren, dat is waar. Maar dat gebeurt in een tweede ronde, en wanneer die ronde komt, bepaal jij niet. Een pagina die voor zijn enige inkomende link afhankelijk is van die tweede ronde kan lang wachten.

Een sitemap vertelt dat een URL bestaat. Een link vertelt dat hij ergens bij hoort. Dat is niet hetzelfde signaal, en in dit geval was het verschil elf dagen en geen indexering.

Hoe je dit bij jezelf nakijkt

Dit kost twee minuten en je hebt er geen gereedschap voor nodig. Haal de pagina op zoals een crawler hem krijgt en kijk welke links erin staan:

curl -s https://www.jouwsite.nl/ | grep -o 'href="/[^"]*"' | sort -u

Staat een belangrijke pagina niet in die lijst, dan is hij voor de eerste ronde onzichtbaar. Doe dat voor je homepage en voor de twee of drie pagina's waar je verkeer binnenkomt.

De tweede controle doe je in Search Console, met de URL-inspectie. Die vertelt je niet alleen of een pagina bekend is, maar ook via welke pagina hij gevonden is. Staat daar niets, dan heb je geen linkprobleem meer maar een linkafwezigheid.

Wat we eraan hebben gedaan

De oplossing is niet het menu verbouwen. Een uitklapmenu dat in de browser wordt opgebouwd is een prima menu en het is er voor bezoekers, niet voor crawlers.

De oplossing is de pagina linken vanuit lopende tekst. Wij hebben er vier links naartoe gezet: één in de inleiding op de homepage, twee in kennisbankartikelen die over hetzelfde onderwerp gaan, en één in een blogpost. Al die links staan in de HTML die de server uitlevert, want het is gewoon tekst.

Daarna hebben we indexering met de hand aangevraagd in Search Console. Dat is niet via een API te doen, dus dat is één keer klikken, en vooral iets dat je niet nodig hebt als de links er vanaf dag één staan.

De regel die we eruit hebben overgenomen

Een nieuwe pagina krijgt minstens één link uit lopende tekst voordat hij live gaat. Niet in plaats van het menu, maar erbij. Dat is geen SEO-truc, dat is hoe een site hoort te werken: als je nergens in een zin naar een pagina kunt verwijzen, is het de vraag waarom die pagina er is.

Het aardige is dat die regel ook iets zegt over je content. Een pagina die nergens logisch in een tekst past, mist meestal een duidelijk onderwerp.

Veelgemaakte fouten

"Het staat in de sitemap, dus Google vindt het." Een sitemap is een lijst, geen aanbeveling. Hij helpt bij het ontdekken, maar een URL zonder inkomende links blijft een URL waar niets naartoe wijst.

"Google rendert JavaScript, dus het maakt niet uit." Dat hij het kan, betekent niet dat het snel gebeurt. Alles wat je in de eerste ronde al kunt meegeven, geef je mee in de eerste ronde.

"Ik kijk in mijn browser of de links er zijn." In je browser heeft JavaScript al gedraaid, dus je ziet altijd alles. Haal de HTML op zonder browser, of zet JavaScript uit.

"Ik zet overal in de voettekst een link naartoe." Dat werkt technisch, maar een voettekst met dertig links is voor een bezoeker niets. Eén link in een zin die ergens over gaat, is meer waard dan vijf in een lijst.

"Ik vraag indexering aan en dan is het klaar." Dan is die ene pagina geholpen. De volgende pagina die je alleen in het menu zet, heeft hetzelfde probleem. Repareer de werkwijze, niet de pagina.

MK
Maarten Keizer

Oprichter van Invoker. Ruim twintig jaar hosting, systeembeheer en webdevelopment; bouwt de Claude-hosting zelf en test alles eerst op de eigen servers.

over maarten