Google’s hulpprogramma voor webmasters – Geblokkeerde URL’s

Banner geblokkeerde URL's in Google webmaster tools

Geblokkerde URL's zijn niet het einde van een web site, in tegendeel ze kunnen heel goed gebruikt worden om crawl effiency te verhogen en delen buiten de index te houden.

Zoekmachines gebruiken speciale programma’s genaamd robots die het internet afgaan door van link naar link te gaan. Daarom worden ze ook wel spiders genoemd, omdat ze het web van links afgaan. In Google’s hulpprogramma voor webmasters (hierna: GWT) in de categorie “gezondheid” en het onderdeel “geblokkeerde URL’s” wordt de robots.txt weergegeven. De robots.txt is een bestand speciaal voor zoekmachines waarin wordt gevraagd welke web pagina’s er niet dienen te worden gecrawld. Met andere woorden, via de robots.txt kunnen gedeeltes van de web site geblokkeerd worden voor bots maar ook individuele web pagina’s. Hoewel door middel van robots.txt de web pagina’s geblokkeerd kunnen worden voor bots is het wel mogelijk dat de web pagina gedeeltelijk ge-indexeert wordt (bekijk mijn artikel over crawlen en indexeren om een beter idee te krijgen). Daarom kan het soms beter zijn om andere technieken te gebruiken om de web pagina uit de index te houden. In GWT wordt een kopie van uw robots.txt weergeven deze kopie kan u aanpassen en testen. Dit is een zeer mooie functie omdat een nieuwe robots.txt op deze manier droog getest kan worden voordat deze aanpassingen op de web server wordt aangepast en live is. Maar allereerst wat robots.txt is en welke specificatie robots.txt gebruikt.

Robots.txt specificatie

Voordat Googlebot (de crawler van Google Search) een web site bezoekt dan gaat ze eerst naar de robots.txt om te kijken of ze toestemming heeft om de web site en specifieke web pagina’s te crawlen (als hier een error is stop Google met crawlen). De robots.txt heeft een specifieke mark-up en is een gewone tekst bestand in utf-8 (dit is een codering die dominant is op het internet vanwege met name comptabiliteit). Als er een andere codering wordt gebruikt, bijvoorbeeld html, dan wordt dit door de bots genegeerd. De URL’s zijn hoofdletter gevoelig maar de bot naam, zoals googlebot, is niet hoofdletter gevoelig. Het kan voorkomen dat een URL op de web site niet wordt geblokkeerd omdat de URL ook toegankelijk is via hoofdletters. Onder de format zal ik hier verder naar kijken.

Meestal cached Google de robots.txt voor één dag. Echter als Googlebot een 5xx error op de robots.txt krijgt dan wordt deze langer bewaard (cached). Ook kan (de bots hoeven hier geen rekening mee te houden en dit is slechts een signaal) op basis van de header (de max-age cache-control) de duur langer of korter zijn dan één dag. Hierbij geeft de server in de header aan dat een bepaalde web pagina gedurende een bepaalde periode niet veranderd. Bijvoorbeeld in de header kan het volgende staan:

Cache-Control: max-age=86400

Hierbij wordt aan alle bezoekers inclusief bots gevraagd om de web pagina voor één dag (86400 is het aantal seconden per dag) te bewaren voordat er om een update wordt gevraagd. Het voordeel hiervan is, is dat er voor één dag de web pagina één keer wordt verstuurd door de web server, voor alle andere keren gebruikt de web browser (vaak worden alle web pagina’s ongeacht deze header ook lokaal opgeslagen of ge-cachd) de lokaal opgeslagen versie waardoor bandbreedte wordt gespaard.

Voor Googlebot (en alle andere bots van Google) geldt dat het bestand robots.txt niet groter mag zijn dan 500 kb. De internet protocollen voor het ophalen van de robots.txt die geldig zijn http (HyperText Tranfer Protocol), https (HyperText Tranfer Protocol Secure) en specifiek voor Google ftp (File Transfer Protocol).

Locatie van de robots.txt

Over het algemeen is het bestand robots.txt in de root van een web site. Waarbij sub-domeinen een eigen robots.txt hebben. Bijvoorbeeld:

  • http://example.com/robots.txt is geldig voor http://example.com maar niet geldig voor http://blog.example.com
  • http://blog.example.com/robots.txt is geldig voor http://blog.example.com maar niet  geldig voor http://example.com

Elke port heeft ook zijn eigen robots.txt met uitzondering van port 80, 443 en 21. Dit komt omdat port 80 gebruikt wordt voor de http server, port 443 wordt gebruikt voor een https server en port 21 wordt gebruikt voor een ftp server. Bijvoorbeeld:

  • http://example.com:80/robots.txt is geldig voor http://example.com/
  • https://example.com:443/robots.txt is geldig voor https://example.com/
  • ftp://example.com:21/robots.txt is geldig voor ftp://example.com/

Voor elke andere port geldt dit niet. Bijvoorbeeld:

  • http://example.com:8080/robots.txt is niet geldig voor http://example.com/

Tot slot is een robots.txt in een sub-directory niet geldig. Met andere woorden Googlebot bekijkt een robots.txt in een folder niet. Bijvoorbeeld:

  • http://example.com/categorie/robots.txt is geen geldige robots.txt

De format

Allereerst commentaar kan worden toegevoegd door middel van een “#”.  Hierdoor wordt alles na de “#” genegeerd. De algemene format is een veld gevolgd door een waarde. De standaard mark-up is als volgt:

  • <veld>: <waarde>

Om de leesbaarheid te vergroten wordt aangeraden een spatie te gebruiken maar dit is niet noodzakelijk en slecht bedoeld voor mensen. Het <veld> kan vier verschillende elementen hebben:

  • User-agent Een user agent is de naam van een software programma. Bijvoorbeeld als Google Search een web pagina bezoekt dan meldt die zich aan met Googlebot als user agent en als Bing een web pagina bezoekt dan meldt die zich aan als Bingbot. Ook als een persoon naar een web pagina gaat meldt deze zich aan met een user agent. Bijvoorbeeld een iPhone gebruiker meldt zich aan met iPhone.
  • Disallow Hiermee wordt aangegeven dat iets niet toegankelijk is voor een bot.
  • Allow Hiermee wordt aangegeven dat iets wel toenkelijk is voor een robot.
  • Sitemap Hiermee wordt aangegeven waar de sitemaps.xml is.

Hierbij is het veld niet hoofdletter gevoelig maar de waarde is wel hoofdletter gevoelig. Bijvoorbeeld:

  • Disallow: /log-in.html waar “Disallow” het veld is en “/log-in.html” de waarde.

In dit voorbeeld is de waarde hoofdletter gevoelig. Dat wil het volgende zeggen:

  • http://example.com/log-in.html wordt geblokkeerd maar http://example.com/LOG-IN.html niet maar ook http://example.com/Log-in.html niet.

Hierdoor kan het voorkomen dat een URL wel wordt ge-crawld en ge-indexeert terwijl dit niet de bedoeling was. Namelijk sommige server zijn zo ingesteld dat ze ongeacht of er hoofdletters in de URL staan of niet de zelfde web pagina weergeven. De oplossing is om één versie van een web pagina te presenteren. Dit kunt u doen door middel van een 301 permanent re-direct (bekijk mijn artikel over adreswijziging om een idee te krijgen over 301 permanent re-direct).

Er is een uitzondering op de hoofdletter gevoeligheid in de waarde. Namelijk de user-agent. In robots.txt is de waarde van een user agent niet hoofdletter gevoelig. Ook geldt voor de waarde van de user agent dat het niet overeenkomende tekst genegeerd wordt. Bijvoorbeeld:

  • user-agent: Googlebot/1.2 komt overeen met met de user agent googlebot.

Met betrekking tot user agents, als er in een robots.txt een specifieke regel is voor een specifieke bot (user agent) dan geldt alleen die specifieke regel en andere regels ook de algemene regel niet. De algemene regel of een regel die voor alle robots geldt wordt weergegeven door middel van een “*” in het veld “User-agent”. Bijvoorbeeld:

User-agent: *
Disallow: /categorie/

User-agent: googlebot
Allow: /categorie/

In dit voorbeeld heeft Googlebot wel toegang tot de categorie, maar andere bots met een andere user agent niet.

De meeste zoekmachines waaronder Google ondersteunen ook patronen. Deze patronen gebruiken “wildcards” om door middel van logica meerdere URL’s tegelijkertijd te blokkeren. De twee wildcards zijn “*” en “$”. In beginsel zijn er drie mogelijkheden (met betrekking tot “disallow”):

  • *<element> Als er in een URL het <element> zit dat wordt deze geblokkeerd.
  • <element>$ Als er aan het einde van een URL de <element> is dan wordt deze geblokkeerd.
  • *<element>$ Als er in een URL het <element> zit waarbij het <element> aan het einde van de URL is.

Hoewel het laatste punt erg lijkt op het tweede punt zal ik door middel van een voorbeeld uitleggen waarom deze toch verschilt. Namelijk, hoewel “Disallow” meestal gebruikt wordt voor de robots.txt is “Allow” ook een geldige veld en “Disallow” en “Allow” kunnen te samen worden gebruikt. Bijvoorbeeld we hebben de volgende twee URL’s

http://example.com/?id=123 en http://example.com/? waar http://example.com/? de URL is die u wilt indexeren maar alles wat volgt na “?” (dit is het <element>) dient geblokkeerd te worden. In dat geval is de record in de robots.txt als volgt:

Disallow: /*?
Allow: /*?$

Met de “Disallow” worden alle URL’s met een string voor “?” en met een string na “?” geblokkeerd en met “Allow” wordt aangegeven dat een URL die eindigt op “?” wel gecrawld dient te worden. Er is wel een uitzondering met betrekking tot de wildcard “*” namelijk neem dit voorbeeld:

Disallow: /*.php

In dat geval wordt example.com/ wel ge-crawld ook als deze naar aan index.php is toegewezen.

Tot slot, bestaat het veld sitemap. In dit veld kunt u aan zoekmachines aangeven waar de sitemap.xml is. Hierbij dient de web naar de sitemap volledig te zijn. Met andere woorden, de URL dient een absolute URL te zijn. Bijvoorbeeld:

Sitemap: http://example.com/sitemaps.xml

en niet

Sitemap: /sitemaps.xml

Robots.txt testen in GWT

Zoals al in de inleiding gezegd kan de robots.txt worden getest in GWT. Het aanpassen van een robots.txt is iets wat niet vaak voorkomt. Meestal is er één keer een robots.txt aangemaakt en daarna wordt er niet meer naar gekeken. Omdat het aanpassen van een robots.txt niet vaak voorkomt is het zeer handig om eerst te kijken hoe Googlebot een nieuwe record in robots.txt behandeld. Omdat dit een test is zijn de veranderingen niet zichtbaar en kunnen potentiële fouten eruit gehaald worden. Immers door de robots.txt blokkeert men de crawler en daardoor kan het voorkomen dat een web pagina of gedeeltes van een web site niet ge-crawld kan worden en daardoor niet in de index, waardoor de web pagina’s niet in de zoekresultaten voor komen. In GWT kan ervoor verschillende bots van Google worden getest. De bots zijn:

  • Googlebot: Dit is de robot voor Google Search, de zoekmachine van Google. Deze is altijd aan en kan niet uit gezet worden.
  • Googlebot-Mobile: Ook deze is voor Google Search maar dan special voor de mobiele-zoekmachine. Google heeft een mobiele spider omdat de zoekresultaten voor mobiele gebruikers kan verschillen van desktop gebruikers. De rede hiervoor is, is dat mobiele gebruikers mobiel geoptimaliseerde web sites meer waarderen dan niet-mobiel-geoptimaliseerde sites.
  • Googlebot-Image: Dit is de bot voor Google Image Search. Google heeft een specifieke zoekmachine speciaal voor afbeeldingen.
  • Mediapartners-Google: Dit is de robot van Google AdSense. AdSense is het product van Google waarbij web site eigenaren advertenties van Google kunnen toevoegen op de web site.
  • Adsbot-Google: Dit is een speciale robot om de kwaliteit te testen van web pagina’s die gebruik maken van AdWords. AdWords is het product van Google waarbij web site eigenaren kunnen bieden om te adverteren op Google.

Screenshot Robots.txt analyse in GWT

Bekijk ook de andere artikelen van de tab “Gezondheid” in GWT:

Site-fouten  URL-fouten  Crawl statistieken  Ophalen als Googlebot  Indexeringstatus Malware

Samenvattende voorbeelden

In het onderdeel format heb in constant voorbeelden gebruikt. Nu kan dit verwarrend zijn daarom hier een overzicht:

Regel Komt overeen met Komt niet overeen met
Disallow: /log-in.html example.com/log-in.html example.com/LOG-IN.html
example.com/log-in.php
example.com/Log-in.html
User-agent:Googlebot/1.2 googlebot
Disallow: /categorie/ example.com/categorie/
example.com/categorie/?id=123
example.com/categorie/schoenen.html
example.com/Categorie/Schoenen.html
example.com/categorie
Disallow: /*? example.com/?id=123
Allow: /*?$ example.com/?
Disallow: /*.php example.com/pagina.php
example.com/pagina.php?id=123
example.com/pagina.PHP

Geef een reactie

Uw e-mail adres wordt niet gepubliceerd.

*
*

De volgende HTML tags en attributen kunnen worden gebruikt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>