Zoekmachines moeten pagina’s eerst ontdekken en crawlen voordat ze die kunnen beoordelen voor de zoekresultaten. Je leest hoe robots.txt en XML-sitemaps daarbij helpen, wat deze bestanden niet kunnen afdwingen en welke technische fouten ervoor kunnen zorgen dat belangrijke pagina’s buiten beeld blijven.
Hoe zoekmachines pagina’s ontdekken en crawlen
Een zoekmachine ontdekt pagina’s meestal via links vanaf andere pagina’s, via eerder bekende URL’s en via ingediende sitemaps. Daarna probeert een crawler de URL op te halen. Als dat lukt, kan de zoekmachine de inhoud verwerken en besluiten of de pagina in de index thuishoort. Crawlen en indexeren zijn dus verschillende stappen: een pagina kan wel worden bezocht, maar niet worden opgenomen in de zoekresultaten.
Links binnen de website blijven belangrijk. Een pagina die alleen in een sitemap staat, maar nergens vanaf een andere pagina bereikbaar is, kan wel worden gevonden, maar is voor bezoekers en crawlers moeilijker te plaatsen in de structuur. Denk aan een productcategorie die niet in de navigatie of interne links voorkomt. Een sitemap vervangt zulke verbindingen niet.
Ook de technische bereikbaarheid telt. Een serverfout, trage reactie of onbedoelde omleiding kan verhinderen dat een crawler de inhoud goed ophaalt. Zoekmachines verdelen hun crawlcapaciteit bovendien over veel URL’s. Vooral grote webshops, websites met filters en sites met veel automatisch aangemaakte URL-varianten kunnen daardoor baat hebben bij heldere crawlregels en een actuele sitemap. Die hulpmiddelen sturen ontdekking en toegang, maar bepalen niet zelfstandig welke pagina’s uiteindelijk zichtbaar worden.
Wat robots.txt precies regelt en waar het bestand staat
Robots.txt is een tekstbestand met instructies voor crawlers. Het staat op de hoofdlocatie van een domein, bijvoorbeeld op https://voorbeeld.nl/robots.txt. Een bestand in een submap geldt niet automatisch voor de rest van de website. Ook protocol en hostnaam zijn van belang: regels voor https://voorbeeld.nl gelden niet vanzelf voor http://voorbeeld.nl of een subdomein zoals shop.voorbeeld.nl. Elke relevante host heeft dus een eigen robots.txt nodig.
In het bestand staan groepen regels. Met een regel voor User-agent geef je aan op welke crawler de instructies gericht zijn; met Disallow geef je aan welke paden die crawler niet moet ophalen. Een algemene groep is bedoeld voor crawlers die geen specifiekere groep gebruiken. Google begrijpt ook jokertekens zoals * en het teken $ voor het einde van een URL. Omdat implementaties kunnen verschillen, is het verstandig om geen ingewikkelde regels te gebruiken zonder ze per crawler te controleren.
Robots.txt is openbaar en bedoeld als verzoek aan crawlers die zich aan het Robots Exclusion Protocol houden. Het is geen toegangsbeveiliging: kwaadwillende bots kunnen het bestand negeren. Zet er daarom geen wachtwoorden, klantgegevens of andere vertrouwelijke URL’s in. Bescherm gevoelige omgevingen met bijvoorbeeld authenticatie of netwerkbeperkingen. Gebruik robots.txt voor crawlgedrag, niet om geheime informatie te verbergen.
Wat robots.txt niet afdwingt: indexering, privacy en toegang
Een belangrijke misvatting is dat Disallow een pagina uit Google haalt. De regel voorkomt in de eerste plaats dat een toegestane crawler de inhoud van de geblokkeerde URL ophaalt. Als andere pagina’s naar die URL linken, kan een zoekmachine de URL toch kennen en soms zonder inhoud in de resultaten tonen. De crawler mag de pagina dan niet bezoeken om de inhoud of eventuele indexeringsinstructies te lezen.
Dat levert een veelvoorkomende fout op: een pagina krijgt een noindex-instructie, maar het bijbehorende pad wordt tegelijk in robots.txt geblokkeerd. Omdat de crawler de pagina niet kan ophalen, kan hij de noindex niet zien. Wil je een publiek toegankelijke pagina uit de index houden, dan moet de crawler de instructie kunnen lezen, bijvoorbeeld via een meta robots-tag of een HTTP-header. Voor privé-inhoud is geen van beide geschikt als beveiligingsmaatregel; gebruik toegangscontrole.
Robots.txt garandeert ook niet dat een bot zich aan de regels houdt. Het bestand biedt geen bescherming tegen scraping, serverbelasting of onbevoegde toegang. Voor zulke problemen zijn maatregelen op server- of applicatieniveau nodig. Behandel robots.txt daarom als een manier om het gedrag van welwillende crawlers te sturen, niet als een technisch slot op een URL. Controleer bij twijfel zowel de crawlregel als de indexeringsinstructie en de daadwerkelijke toegangsbeveiliging.
Een XML-sitemap maken met URL’s die echt geïndexeerd mogen worden
Een XML-sitemap is een machineleesbare lijst van URL’s die je aan zoekmachines wilt laten ontdekken. Neem bij voorkeur alleen URL’s op die een succesvolle statuscode teruggeven, indexeerbaar zijn en de gewenste canonieke versie vertegenwoordigen. Een omgeleide URL, een 404-pagina of een URL met een noindex-instructie hoort doorgaans niet in de sitemap. Zulke tegenstrijdigheden maken het voor zoekmachines minder duidelijk welke pagina’s belangrijk zijn.
Een sitemap moet geldige XML zijn, UTF-8 gebruiken en absolute URL’s bevatten, inclusief protocol en hostnaam. Speciale tekens moeten volgens XML-regels worden gecodeerd. Een sitemapbestand kan maximaal 50.000 URL’s of 50 MB ongecomprimeerd bevatten. Grote websites splitsen de lijst daarom op en verwijzen vanuit een sitemapindex naar meerdere bestanden. Dat maakt updates en foutcontroles ook overzichtelijker, bijvoorbeeld per type content of per productcategorie.
Het veld lastmod kan aangeven wanneer de inhoud van een pagina voor het laatst betekenisvol is gewijzigd. Vul het niet bij elke sitemapgeneratie blind met de huidige datum: een onjuiste wijzigingsdatum verliest zijn informatiewaarde. Velden zoals prioriteit en wijzigingsfrequentie zijn geen betrouwbare manier om een zoekmachine te verplichten pagina’s vaker te crawlen. Genereer de sitemap vanuit de brondata van het CMS of platform, en controleer of verwijderde producten, oude URL’s en conceptpagina’s er niet in blijven staan.
Hoe je robots.txt en XML-sitemaps met elkaar laat samenwerken
Robots.txt en een sitemap hebben verschillende taken. Robots.txt geeft crawlers aanwijzingen over welke URL-paden ze niet moeten ophalen; een sitemap meldt welke URL’s je wilt laten ontdekken. Je kunt het sitemapadres in robots.txt opnemen met een absolute verwijzing, bijvoorbeeld met de instructie Sitemap:. Dat helpt crawlers het bestand te vinden, maar garandeert niet dat ze iedere URL bezoeken of indexeren. Je kunt een sitemap daarnaast afzonderlijk indienen via de tools van een zoekmachine.
Voorkom dat de bestanden elkaar tegenspreken. Als een waardevolle landingspagina in de sitemap staat, maar door robots.txt wordt geblokkeerd, kan de crawler de inhoud niet controleren. Dat geldt ook voor afbeeldingen, scripts of stylesheets die nodig zijn om de pagina goed te begrijpen. Andersom is het meestal onnodig om URL’s in een sitemap te zetten als ze bewust niet geïndexeerd mogen worden. Houd de sitemap gericht op de gewenste, canonieke pagina’s.
Voor een site met meerdere talen of regionale versies kan een sitemap aanvullende informatie over alternatieve taal-URL’s bevatten. Dat vraagt om correcte, wederkerige verwijzingen en consistente canonicals; het is geen oplossing voor ontbrekende interne links of verkeerde taalinstellingen. Zet sitemapregels op de juiste host en controleer dat elke URL bereikbaar is. Een korte, consistente inrichting is doorgaans betrouwbaarder dan veel uitzonderingen die na een CMS-update niet meer kloppen.
Robots.txt-fouten die belangrijke pagina’s onzichtbaar maken
Een foutieve disallow-regel kan een groter deel van een website blokkeren dan bedoeld. Een regel die op een volledige map matcht, kan bijvoorbeeld zowel interne zoekresultaten als belangrijke categoriepagina’s raken. Extra verwarrend wordt het wanneer een regel voor een specifieke crawler afwijkt van de algemene groep. Lees daarom altijd de volledige robots.txt, niet alleen de regel die je net hebt aangepast, en test representatieve URL’s uit verschillende onderdelen van de site.
Een andere risicovolle fout ontstaat bij livegang. Een ontwikkelomgeving kan bewust volledig geblokkeerd zijn, maar die instelling mag niet ongemerkt meekomen naar productie. Controleer robots.txt bij publicatie en na wijzigingen aan domein, CMS, caching of infrastructuur. Let ook op de HTTP-status van het bestand: een onbedoelde foutpagina of een serverfout kan leiden tot ander crawlgedrag dan verwacht. Een geldige robots.txt hoort als tekstbestand bereikbaar te zijn.
Blokkeer geen bestanden die nodig zijn om pagina’s weer te geven of te begrijpen, tenzij daar een bewuste reden voor is. Een crawler die CSS of JavaScript niet kan ophalen, kan moeite hebben met het interpreteren van de pagina. Maak regels bovendien niet afhankelijk van URL-varianten die het CMS onverwacht kan aanpassen, zoals hoofdletters, parameters of nieuwe mapnamen. Houd een wijzigingslog bij en koppel elke regel aan een concrete reden. Zo voorkom je dat oude blokkades blijven staan nadat de technische situatie is veranderd.
XML-sitemapproblemen door filters, varianten en verouderde URL’s
Webshops kunnen enorme aantallen URL’s genereren door filters, sortering, zoekresultaten en trackingparameters. Als elke combinatie in de sitemap belandt, groeit die snel zonder dat er evenveel unieke, nuttige pagina’s ontstaan. URL’s met verschillende parametercombinaties kunnen bovendien dezelfde producten tonen. Bepaal daarom welke gefilterde pagina’s zelfstandig waarde hebben en welke naar een canonieke categorie verwijzen. Neem alleen de gewenste indexeerbare versies op; laat de sitemap niet automatisch elke URL opnemen die het platform kan genereren.
Producten die tijdelijk uitverkocht zijn, vragen om een inhoudelijke keuze. Een nuttige productpagina met alternatieven kan indexeerbaar blijven, terwijl een permanent verwijderd product mogelijk een passende 404- of 410-status moet geven, of naar een echte vervanger kan omleiden. Een sitemap vol oude URL’s die allemaal omleiden, geeft zoekmachines onnodig werk en maakt rapportages lastiger. Verwijder URL’s uit de sitemap wanneer ze niet langer de bedoelde bestemming zijn.
Controleer bij elke sitemap niet alleen of het XML-bestand technisch geldig is, maar ook wat de URL’s teruggeven. Let op omleidingen, canonicals die naar een andere URL wijzen, noindex-tags en serverfouten. Die signalen horen onderling overeen te komen. Automatische generatie voorkomt handmatig onderhoud, maar is geen garantie voor kwaliteit: een templatefout kan duizenden onbedoelde URL’s publiceren. Vergelijk daarom regelmatig aantallen en voorbeelden met de product- of contentdatabase.
Crawlgedrag controleren met Search Console en serverlogs
Een robots.txt-bestand of sitemap uploaden is niet hetzelfde als controleren of alles werkt. Bekijk in de beheertools van zoekmachines of de sitemap is opgehaald en welke fouten of waarschuwingen worden gemeld. Gebruik waar beschikbaar een URL-inspectie om te zien of een specifieke pagina bereikbaar is, wat de crawler aantreft en of een indexeringsprobleem wordt gemeld. Een test van één URL vervangt geen controle van alle templates, maar helpt wel om gerichte vermoedens te toetsen.
Serverlogs laten zien welke URL’s crawlers daadwerkelijk opvragen en met welke statuscode de server antwoordt. Daarmee kun je ontdekken dat een bot veel tijd besteedt aan filtercombinaties, oude URL’s of pagina’s met foutmeldingen, terwijl belangrijke categorieën weinig bezoek krijgen. Controleer wel dat logregels correct aan een crawler zijn gekoppeld; de user-agenttekst alleen kan worden nagebootst. In combinatie met sitemapgegevens en de URL-structuur ontstaat een bruikbaarder beeld van crawlgedrag.
Volg wijzigingen over tijd. Noteer wanneer robots.txt, de sitemapgenerator, URL-structuur of redirects veranderen en vergelijk dat met crawlactiviteit en indexeringsmeldingen. Een plotselinge daling kan samenhangen met een release, maar ook met serverproblemen of gewijzigde content. Stel bij voorkeur automatische controles in voor onbereikbare sitemaps, onverwachte noindex-instructies en belangrijke URL’s die door robots.txt worden geblokkeerd. Zo signaleer je technische afwijkingen voordat ze zich over een groot deel van de website verspreiden.