Module 3 · 3.3
robots.txt: wat je wel en niet blokkeert
Module 3: De technische basis van een pagina · Leestijd: 13 minuten
Leerdoel: Na deze les kun je een robots.txt lezen en schrijven, zelf uitrekenen of een adres voor Googlebot mag, uitleggen wat er gebeurt bij een ontbrekend of onbereikbaar bestand, en weet je waarom robots.txt geen beveiliging en geen noindex is.
Kernbegrippen: robots.txt (RFC 9309), crawler, groep, User-agent, Disallow, Allow, langste overeenkomst, gelijke lengte (Allow wint), * en $, Sitemap:, statuscode van robots.txt (4xx, 5xx), 500 KiB, 24 uur cache, geen beveiliging, geen noindex, AI-crawlers (Google-Extended, GPTBot)
Een bordje bij de voordeur
Een robots.txt is een gewoon tekstbestand in de hoofdmap van je site, altijd op hetzelfde adres: https://www.example.com/robots.txt. Een nette crawler (les 1.2) vraagt dat bestand eerst op en leest welke delen van de site hij niet mag bezoeken. Het is een bordje bij de voordeur, geen slot: Googlebot en Bingbot houden zich eraan, maar een kwaadwillende robot leest het bordje gewoon en loopt door.
Sinds 2022 is het protocol een officiële internetstandaard: RFC 9309. Google beschrijft daarnaast precies hoe Googlebot het bestand leest. Beide bronnen gebruiken we in deze les.
Een paar vaste afspraken:
- Het bestand staat in de hoofdmap van de host. Een robots.txt in
/blog/robots.txtwordt niet gelezen. - Het geldt alleen voor die host, dat protocol en die poort.
https://www.example.com/robots.txtgeldt niet voorhttps://shop.example.com/; die heeft een eigen bestand nodig. - Het is platte tekst in UTF-8.
Hoe het bestand is opgebouwd
User-agent: *
Disallow: /winkelmand/
Disallow: /zoeken
Allow: /zoeken/tips
User-agent: Googlebot
Disallow: /concepten/
Sitemap: https://www.example.com/sitemap.xmlHet bestand bestaat uit groepen. Een groep begint met een of meer regels User-agent: en daarna de regels Disallow: (niet bezoeken) en Allow: (wel bezoeken). Het pad na Disallow: is het begin van een adres: Disallow: /zoeken blokkeert /zoeken, /zoeken?q=rozen en ook /zoekenmachine, want ze beginnen allemaal met /zoeken.
De regel Sitemap: hoort bij geen enkele groep en vertelt waar je sitemap staat (les 3.4). Google eist een volledig adres met https:// en hostnaam.
Een Disallow: zonder pad blokkeert niets. Disallow: / blokkeert alles.
Welke groep geldt?
Een crawler kiest één groep: die met de meest specifieke naam die bij hem past. Googlebot volgt dus de groep User-agent: Googlebot als die er is, en negeert dan de groep * helemaal. In het voorbeeld hierboven mag Googlebot dus wel in /winkelmand/: die regel staat alleen in de *-groep. Dit is een van de meest gemaakte fouten: wie een aparte Googlebot-groep maakt, moet alle regels die ook voor Google gelden daar herhalen.
De naam is niet hoofdlettergevoelig (googlebot = Googlebot). Staan er twee groepen voor dezelfde crawler, dan voegt Google ze samen.
Welke regel wint?
Binnen de groep kan een adres onder meerdere regels vallen. Dan geldt:
- De langste overeenkomende regel wint (het meest specifieke pad).
- Zijn een
Allowen eenDisallowprecies even lang, dan wintAllow. Google noemt dat "de minst beperkende regel".
Twee tekens hebben een speciale betekenis:
| Teken | Betekenis | Voorbeeld | Treft wel | Treft niet |
|---|---|---|---|---|
* | nul of meer willekeurige tekens | Disallow: /*?sessie= | /rozen?sessie=12 | /rozen?kleur=rood |
$ | einde van het adres | Disallow: /*.pdf$ | /folder.pdf | /folder.pdf?v=2 |
Rekenvoorbeeld met de groep * van hierboven, voor de crawler Bingbot (die geen eigen groep heeft):
| Adres | Overeenkomende regels | Uitkomst |
|---|---|---|
/winkelmand/ | Disallow: /winkelmand/ | mag niet |
/zoeken/tips | Disallow: /zoeken (7 tekens) en Allow: /zoeken/tips (12) | mag: de langste wint |
/zoeken?q=rozen | Disallow: /zoeken | mag niet |
/bruidsboeketten | geen | mag |
/robots.txt | (altijd) | mag: robots.txt zelf is altijd toegestaan |
Als het bestand er niet is, of de server hapert
Wat Google doet hangt af van de statuscode waarmee je server op /robots.txt antwoordt:
| Antwoord | Wat Google doet |
|---|---|
| 200 (gevonden) | Leest de regels |
| Doorsturing (301, 302) | Volgt minstens vijf stappen; daarna behandelt Google het als 404 |
| 4xx, zoals 404 of 403 (behalve 429) | Alsof er geen robots.txt is: alles mag |
| 5xx of geen verbinding | De eerste 12 uur crawlt Google de site niet en probeert het opnieuw; daarna tot 30 dagen de laatste goede versie uit de cache. Blijft het daarna mis terwijl de site verder werkt, dan doet Google alsof er geen robots.txt is |
Een ontbrekende robots.txt is dus geen probleem: dan mag alles. Een robots.txt die een serverfout geeft, is wél een probleem: dan houdt Google tijdelijk op met crawlen. RFC 9309 is daar nog strenger: bij een onbereikbaar bestand moet een crawler aannemen dat alles verboden is.
Verder:
- Google leest hoogstens 500 KiB; wat daarna staat, wordt genegeerd.
- Google bewaart robots.txt meestal tot 24 uur in de cache. Een wijziging werkt dus niet meteen. In Search Console vind je bij Instellingen het robots.txt-rapport: welke versie Google het laatst heeft opgehaald, met fouten en waarschuwingen, en een knop om opnieuw te laten ophalen.
- Google kent alleen
User-agent,Allow,DisallowenSitemap. Regels alsCrawl-delayofNoindexnegeert Googlebot.
Wat robots.txt niet doet
Het is geen beveiliging
Iedereen kan je robots.txt lezen, ook wie kwaad wil. Een regel Disallow: /beheer-oud/ wijst juist aan waar iets interessants staat. RFC 9309 zegt het zelf: de regels zijn geen vorm van toegangsbeveiliging. Echt afschermen doe je met een wachtwoord of door de server toegang te laten weigeren, bijvoorbeeld met .htaccess (zie Verder lezen).
Het is geen noindex
Dit is de belangrijkste les. robots.txt regelt crawlen, niet indexeren (les 1.3). Google schrijft letterlijk dat robots.txt geen manier is om een pagina uit Google te houden. Linken andere sites naar een geblokkeerd adres, dan kan het adres toch in de zoekresultaten verschijnen, alleen zonder beschrijving.
Wil je een pagina uit de zoekresultaten houden, gebruik dan noindex (in een <meta name="robots"> of de kopregel X-Robots-Tag) of zet de pagina achter een wachtwoord. En pas op voor de klassieke val: zet je een pagina met noindex óók in robots.txt op Disallow, dan kan Google de pagina niet bezoeken en de noindex dus nooit lezen.
Blokkeer geen onderdelen die Google nodig heeft
Blokkeer geen mappen met stylesheets, scripts of afbeeldingen die je pagina nodig heeft om goed te tonen. Google bekijkt je pagina zoals een browser dat doet; zonder die bestanden begrijpt Google de pagina slechter.
AI-crawlers
Steeds meer bedrijven verzamelen webpagina's voor kunstmatige intelligentie. Een paar daarvan kun je met robots.txt aanspreken:
Google-Extendedis geen aparte robot, maar een naam in robots.txt waarmee je aangeeft of Google je inhoud mag gebruiken voor het trainen van Gemini-modellen en voor grounding. Google schrijft dat dit geen invloed heeft op je opname of positie in Google Zoeken.GPTBotvan OpenAI verzamelt pagina's die gebruikt kunnen worden voor het trainen van modellen.OAI-SearchBotis voor de zoekfunctie van ChatGPT: blokkeer je die, dan verschijnt je site niet in de zoekantwoorden van ChatGPT.
User-agent: GPTBot
Disallow: /Of je dat wilt, is een keuze, geen technische noodzaak. Blokkeer je per ongeluk een zoekrobot (Googlebot, Bingbot, OAI-SearchBot), dan word je daar minder goed gevonden.
In de praktijk: waar staat je robots.txt?
- De AI Builder van WebOké maakt bij het publiceren zelf een robots.txt met
User-agent: *,Allow: /en eenSitemap:-regel. Zet je de site op niet indexeren, of is het een gratis demo, dan staat erDisallow: /. - WordPress maakt een virtuele robots.txt met een verwijzing naar de sitemap. Zet je zelf een bestand
robots.txtin de webmap, dan gaat dat voor. - Een eigen site op een hostingpakket: je zet
robots.txtin de webmap (bij DirectAdminpublic_html) via Bestandsbeheer of FTP.
Bij andere aanbieders werkt het vergelijkbaar: het bestand moet altijd op /robots.txt van je host bereikbaar zijn.
Samenvatting
- robots.txt staat op
/robots.txtvan elke host en vertelt nette crawlers wat ze niet mogen bezoeken. - Een crawler volgt één groep (de meest specifieke naam, anders
*). Binnen de groep wint de langste regel; bij gelijke lengte wintAllow. - 404 betekent "alles mag", een serverfout laat Google tijdelijk stoppen met crawlen. Google leest 500 KiB en cachet tot 24 uur.
- robots.txt is geen beveiliging en geen noindex. Blokkeer een
noindex-pagina niet in robots.txt. - AI-crawlers als
GPTBoten de naamGoogle-Extendedkun je apart regelen, zonder gevolgen voor Google Zoeken.
Quiz
Opdracht
Opdracht A3.3: Je robots.txt doorgelicht. Vul je domein in, en daarnaast drie adressen van je eigen site (bijvoorbeeld de homepage, een productpagina en je winkelmand of zoekpagina) met per adres je verwachting: mag Googlebot hem crawlen, ja of nee? Het programma haalt je robots.txt op, kijkt naar de statuscode, de grootte, de groepen en de Sitemap:-regel, en rekent voor elk adres na wat Googlebot volgens de regels uit deze les mag. Klopt jouw verwachting? Geen eigen site? Gebruik www.wikipedia.org.
Verder lezen
De stappen in deze artikelen gelden voor de panelen van WebOké; bij andere aanbieders werkt het vergelijkbaar.
- DirectAdmin handleiding 11.1: Bestandsbeheer openen: de mappen in je pakket
- Bestanden blokkeren via .htaccess
- DirectAdmin handleiding 11.4: Verborgen bestanden zoals .htaccess tonen en bewerken
- Google Search Central, Hoe Google robots.txt interpreteert: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
- Google Search Central, Inleiding tot robots.txt: https://developers.google.com/search/docs/crawling-indexing/robots/intro
- RFC 9309, Robots Exclusion Protocol: https://www.rfc-editor.org/rfc/rfc9309.html
- Google, Overzicht van de crawlers (Google-Extended): https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers
- OpenAI, Overzicht van de crawlers (GPTBot, OAI-SearchBot): https://developers.openai.com/api/docs/bots
- Een pagina uit Google houden: robots.txt of noindex?
- Online gevonden worden 1.3: Sitemap en robots.txt bij de AI Builder
- Online gevonden worden 1.4: Sitemap en robots.txt bij WordPress en je eigen site
- Gratis WordPress-cursus 9.2: Vindbaarheid: de basis
