De robots.txt is een belangrijk onderdeel van een website. En toch wordt deze vaak niet of verkeerd geïmplementeerd en gebruikt. In deze blog leg ik uit wat dit is en geef ik je een aantal situaties waarvoor jij het nu ook meteen kan gebruiken. Hierdoor laat jij geen kansen meer liggen.
Wat is een robots.txt?
De robots.txt is een tekstbestand dat op een website staat. Wanneer een crawler (zoekmachine) een website bezoekt kijkt deze als eerste naar dit bestand. Dit werkt als een soort handleiding voor die website. Hier staat namelijk in welke pagina’s de crawler wel of niet mag crawlen.
Waarom is de robots.txt belangrijk?
Waarom zou je een robots.txt gebruiken? Je wilt toch altijd gevonden worden? En zo niet, dan kan ik toch alle pagina’s gewoon een noindex tag geven? En ja, dat kan. Maar waarom zou je het jezelf moeilijk maken door een groot aantal pagina’s handmatig een tag te geven en dit elke keer in de gaten te houden wanneer nieuwe pagina’s aangemaakt worden voor je website?
Een robots.txt-bestand wordt voornamelijk gebruikt om crawlverkeer naar websites te beheren. Ook helpt het ervoor te zorgen dat je bestanden zoals .pdf en .xls niet tussen de zoekresultaten belanden. Daarnaast krijg je ook meer zeggenschap over de crawlverzoeken die je webpagina’s krijgen. Hierdoor heb je meer invloed op hoe het crawlbudget wordt gebruikt. De instructies in het robots.txt-bestand wordt ook wel directives genoemd.
Let op! Je kan met de robots.txt alleen het crawlen beïnvloeden, niet het indexeren.
De basisonderdelen van de robots.txt
In het robots.txt-bestand kunnen verschillende onderdelen voorkomen. Deze worden hieronder besproken.
User agent: de user agent staat voor de crawler. In de robots.txt kan je per crawler verschillende instructies geven. In de praktijk wordt dit veelal gebruikt om specifieke crawlers te blokkeren. Wanneer een directive wordt gegeven voor een specifieke crawler zal hij de algemene directive niet meer volgen.
User-agent: *
Disallow: /
User-agent: Googlebot
Disallow: /nogoogle/
Disallow en Allow: met disallow geef je aan welke pagina of paginagroepen je niet gecrawled wit hebben. Bijvoorbeeld alle pagina’s die de parameters van een zoekopdracht bevatten (zoals ‘q=’). Met allow kan je aangeven dat je specifieke pagina’s in deze groep juist wel weer gecrawled wilt hebben.
User-agent: *
Disallow: /blog/pagina
Allow: /blog/pagina/1
Let op: bij Disallow en Allow neemt GoogleBot de langste directive als leidend. Google geeft aan dat ze dit doen omdat zij de langste directive als meest specifiek zien en daarom het belangrijkst.
Voorbeeld: filters en productpagina’s
In het voorbeeld hieronder is er een website waarbij de filter uitgesloten moeten worden. De gefilterde pagina’s hebben ‘harde’ URLs. Deze kunnen dus niet simpelweg uitgesloten worden door middel van een parameter. Een voorbeeld van een filter dat uitgesloten moet worden is dat van de mogelijke formaten. Deze zijn in centimers en milimeters beschikbaar. Deze woorden worden opgenomen in de URL. Dit moet uitgesloten worden in de Robots.txt door middel van een disallow directive.
Echter staan deze woorden ook in de URLs van producten. Deze moeten wel gecrawled worden. Hiervoor kan de allow directive gebruikt worden. Doordat de langste directive aangehouden wordt kan je het onderstaande voorbeeld gebruiken.
Disallow: /*enti #disallow centimeter
Disallow: /*lime #disallow milimeter
Allow: /*.html #productpaginas toestaan voor crawlen
Bij bovenstaand voorbeeld is het wel belangrijk om te onthouden dat andere pagina die niet eindigen met .html, bijvoorbeeld contentpagina’s, ook worden uitgesloten voor crawlen als deze ‘enti’ of ‘lime’ in de URL hebben staan.
*: De * is eigenlijk een soort joker. Net als bij Rummikub kan je deze inzetten als een teken dat elke mogelijke reeks vertegenwoordigt. Bijvoorbeeld ‘User-agent: *’ betekent dat de directive geldt voor alle crawlers.
User-agent: *
Disallow: /blog/
Disallow: /*?
$: Met de $ match je URL’s die hetzelfde eindigen. Hiermee kan je bijvoorbeeld gemakkelijk bestanden zoals alle .pdf bestanden uitsluiten.
User-agent: *
Disallow: /*.pdf$
#: Net als in broncodes kunnen ook comments gezet worden in de robots.txt. Wil je een opmerking toevoegen? Plaats hiervoor dan een #. Alles na de hashtag (op dezelfde regel) wordt genegeerd door de user agents.
# Group 1
User-agent: *
Disallow: / # verwijderen na livegang
# Group 2
User-agent: MJ12bot
Disallow: / # niet verwijderen na livegang
Crawldelay: Hoewel ik dit zelf zelden tegenkom kan ook een delay worden aangegeven voor crawlers. Dit komt direct na de Allow/Disallow. Hiermee kan je ervoor zorgen dat een crawler niet de website overspoelt met requests. Dit moet echter alleen gebruikt worden als tijdelijk oplossing.
Googlebot negeert deze directive. Voor de Googlebot kan je dit instellen in de oude Search Console omgeving.
User-agent: *
Disallow: /search/
User-agent: BingBot
Disallow: /search/
Crawldelay: 10
Sitemap: Door middel van ‘Sitemap’ kan je de sitemap(s) van de websites toevoegen. Hierover later in de blog meer informatie.
Bruikbare situaties
Naar mijn mening zou elke website (actief) gebruik moeten maken van een robots.txt-bestand. In deze blog geef ik vier mogelijkheden om de robots.txt in te zetten. Ik ben ervan overtuigd dat minstens een van die vier bruikbaar is voor jouw website.
Sitemap(s)
Zoals we al eerder hebben besproken, kan je ook de locatie van je sitemap aangeven in de robots.txt. Ook als je voor de rest de robots.txt niet gebruikt kan ik dit sterk adviseren. Zoekmachines beginnen namelijk op websites bij het robots.txt-bestand. Zij kunnen deze gemakkelijk vinden omdat deze altijd op dezelfde plek staat. Daarentegen heeft een Sitemap geen vaste plaats.
Dus door je Sitemap(s) te vernoemen in de Robot.txt kan een crawler deze gemakkelijk en snel vinden. Voeg de Sitemap toe door de volgende regel toe te voegen aan het bestand. Hierbij is het belangrijk dat de gehele URL wordt opgegeven: “Sitemap: https://jouwdomein/jouwsitemap.xml”
User-agent: *
Disallow: /wp-admin/
Disallow: /*pdf*/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://jouwdomein.nl/jouwsitemap.xml
Sitemap: https://jouwdomein.nl/jouwsitemap_afbeeldingen.xml
Let op! Dit is ook belangrijk wanneer je je sitemap al hebt geüpload in Search Console. Er zijn immers meerdere zoekmachines dan alleen Google.
Parameters/Duplicate content
Een website die gebruik maakt van parameters heeft al snel duplicate content. In veel gevallen kan je dit al voorspellen. Dit gebeurt namelijk vrij snel met een blogoverzicht met meerdere pagina’s (/page=3/) of een productoverzicht met verschillende filters (sort=popular&max=100&min=0&brand=0). Vaak zijn deze pagina’s zelf niet belangrijk genoeg en wil je ze ook niet tussen de zoekresultaten hebben. Je hebt liever dat het crawlbudget gebruikt wordt voor de belangrijke pagina’s.
Een ander voordeel is dat pagina’s die automatisch aangemaakt worden, zoals nieuwe overzichtspagina’s bij blogs, bij het plaatsen van nieuwe blogs ook automatisch opgenomen zijn in de robots.txt. Dit is niet standaard het geval met een noindex of canonical tag.
User-agent: *
Disallow: *?page=*
Let op: het is niet altijd de beste oplossing om parameters uit te sluiten. Bijvoorbeeld bij inkomende links die verwijzen naar UTM’s of filters. Inkomende links zijn goed voor je linkprofiel. Maar door deze toe te voegen aan je Robots.txt worden deze niet meer gecrawled.
Hierdoor genereren deze geen waarde voor je linkprofiel. Hierdoor is het beter om deze niet door middel van de Robots.txt uit te sluiten. Maak dan gebruik van canonical tags. Zo behoud je linkwaarde zonder dat een pagina als duplicate content wordt gezien.
(Media)bestanden
Sommige bestanden wil je liever niet tussen de zoekresultaten hebben. Bijvoorbeeld een whitepaper die achter een leadformulier zit. In tegenstelling tot webpagina’s kan je mediabestanden met de robots.txt wel verbergen voor zoekmachines.
User-agent: *
Disallow: /*.xls$
Disallow: /*pdf*/
Developmentomgevingen
In sommige gevallen wil je dat een website geheel niet gevonden wordt. Misschien zit je midden in een migratie. Het is natuurlijk vanzelfsprekend dat je van te voren een beeld wilt hebben van hoe de nieuwe website eruit komt te zien. Het is het meest praktisch om een demo omgeving te creëren om de nieuwe website. Dan kan alles van tevoren worden voorbereid zoals het vullen van de content en alles testen.
Echter is het niet praktisch als deze terecht komt tussen de zoekresultaten. Het is dan praktisch om dan de gehele website uit te sluiten door middel van de robots.txt.
User-agent: *
Disallow: /
Wees gewaarschuwd
De robots.txt heeft ook limieten. Het bestand is uiteindelijk een suggestie voor een crawler. Google geeft aan dat zij dit altijd zullen respecteren. Echter is Google niet de enige crawler. Hierdoor is het mogelijk dat de pagina’s wel op andere plekken zoals andere zoekmachines zichtbaar worden.
Zoals eerder al gewaarschuwd kan de robots.txt alleen het crawlen beïnvloeden en niet het indexeren. Een pagina kan nog steeds geïndexeerd worden als deze vanaf een andere website gelinked is. Hiervoor hoeft een een pagina niet gecrawled te worden.
De robots.txt is dus geen foolproof plan. Dit omdat de robots.txt wel wordt geïndexeerd en genegeerd kan worden. Hiervoor moet dan alsnog een no-index tag worden gebruikt.
Daarnaast is het robots.txt-bestand openbaar. Hierdoor kan elke paginabezoeker de robots.txt checken én naar de pagina gaan. Dit is dus ook geen oplossing voor pagina’s met gevoelige informatie. Hiervoor moet dan gebruik worden gemaakt van een wachtwoordbeveiliging op de pagina.
Je (nieuwe) robots.txt testen?
Uiteindelijk wil je natuurlijk weten of je Robot.txt-bestand correct werkt. Het is niet de eerste keer dan een websitebeheerder een fout maakt met de robots.txt en dan de verkeerde pagina’s uitsluit. Zoals Ryanair in 2020, toen zij de gehele website uit zoekmachines haalde.
Om te kijken of de specifieke directives werken kan je wachten tot de Search Console update. Maar er kan veel tijd overheen gaan voordat hij die specifieke pagina’s checkt. Dit kan sneller.
Wil je kijken of een specifieke directive werkt en de pagina inderdaad wordt tegengehouden? Voor Googlebot kan je de robots.txt-tester van Google webmaster tools gebruiken. Hiervoor heb je (toegang tot) Search Console nodig.
Heb je geen toegang tot Search Console of wil je het checken voor een andere crawler? Hier heeft Merkle een makkelijke tool voor ontwikkeld.
Eline Barten is Technisch SEO & CRO Specialist. Na gewerkt te hebben aan verschillende (online) marketingprojecten verdiept zij zich nu in van alles wat te maken heeft met websites.