Zoekmachine Optimalisatie met Robots.txt

Een van de eerste dingen die je moet weten als webmaster is weten hoe robots.txt werkt. Wat doet robots.txt precies? Met robots.txt laat je de spiderbots weten welke pagina's en mappen wel in de zoekmachine index mogen worden opgenomen, en welke pagina's en mappen niet niet mogen worden geïndexeerd. Robots.txt vormt daarom een belangrijk onderdeel van je zoekmachine optimalisatie

robots.txt basics

robots.txt (kleine letters allemaal) is in feite een simpel text bestand. Je plaatst dit bestand altijd in je webserver root directory. Met andere woorden, als je domein www.seoking.nl is, dan vind je robots.txt op www.seoking.nl/robots.txt. Nooit in subdirectories zoals www.seoking.nl/map/robots.txt. Hetzelfde geldt voor subdomeinen. Als je subdomein poker.seoking.nl is, dan staat je robots.txt op poker.seoking.nl/robots.txt.

Een simpel robots.txt staat hieronder:

CODE:
  1. # Commentaar wordt niet gelezen door bots
  2. User-agent: *
  3. Disallow:

Laten we dit even ontleden. Op de eerste regel staat commentaar, voorafgaand door een hash/pound karakter. Deze regels worden niet gelezen door spiderbots. Hier kan je van alles typen, maar gebruik het om voor jezelf duidelijk te maken waarom je bepaalde regels gebruikt in je robots.txt.

Op de tweede regel staat User-agent, hiermee kun je een spiderbot identificeren. Elk spiderbot heeft een naam en met User-agent kun je deze individueel aanspreken. Hieronder heb ik een lijst van bekende spiderbots.

  • Google: Googlebot, Googlebot-Image (Google Image), Googlebot-Mobile (Google Mobile) en Mediapartners-Google (Google AdSense).
  • Yahoo: Slurp
  • Live: msnbot
  • Ask: teoma
  • DMOZ Checker: robozilla
  • Alexa: ia_archiver

Hier is een volledige lijst van User-Agents.

In mijn voorbeeld heb ik een asterisk (ster) gebruikt. Dit is een wildcard en dat betekent dat alle spiderbots deze regels moeten volgen.

Op de derde regel staat Disallow. Hiermee laat je de spiderbot weten welke pagina's mogen worden opgenomen en welke niet. In dit geval staat er niets. Dit betekent dat spiderbots alle pagina's mag indexeren. Het bovenstaande voorbeeld kun je vergelijken met een niet bestaande robots.txt. Zodra een spiderbot langskomt op je website en als die geen robots.txt kan vinden, dan gaat de bot ervan uit dat het alle pagina's mag opnemen in de zoekmachine index.

Laat ik een ander voorbeeld nemen voor robots.txt:

CODE:
  1. User-agent: Googlebot
  2. Disallow: /
  3. User-agent: *
  4. Disallow:

Nu zeg ik: "Googlebot, jij mag niks indexeren van mijn website. Alle andere spiderbots, jullie mogen alles indexeren." In dit voorbeeld geef ik expliciet aan dat User-agent Googlebot, de search spiderbot van Google, niets mag indexeren. Dit maal heb ik bij Disallow een forward slash. Dit betekent dat je webserver root directory niet mag worden opgenomen in de zoekmachine index. Met andere woorden, geen enkele pagina en map wordt geindexeerd. Dit voorbeeld kun je verkorten naar dit:

CODE:
  1. User-agent: Googlebot
  2. Disallow: /

Omdat ik nu alleen expliciet Googlebot aanspreek, mogen alle andere bots doen wat zij willen.

NOOT: Vergeet niet de forward slash te gebruiken bij een Disallow commando.

Nu een iets gecompliceerder voorbeeld.

CODE:
  1. User-agent: *
  2. Disallow: /secret/
  3. # Slurp = Yahoo bot
  4. User-agent: Slurp
  5. Disallow: /pages/
  6. Disallow: /poker.html
  7. Disallow: /Poker.html
  8. Disallow: /POKER.html

Wees gerust, dit is geen rocket science. De eerste twee regels geven aan dat alle spiderbots alle pagina's en mappen mogen indexen, behalve de map secret en alle pagina's die daarin zich bevinden.

Daarna geef ik expliciet aan dat Slurp (Yahoo spiderbot) ook de map pages en de pagina's daarin niet mag indexeren. Ook mag Slurp de bestanden poker.html, Poker.html en POKER.html niet indexeren.

Om het overzichtelijk te maken, hieronder laat ik zien wat de bots niet mogen indexeren.
Alle spiderbots behalve Slurp:
/secret/

Slurp:
/secret/
/pages/
/poker.html
/Poker.html
/POKER.html

Als je een uitgebreide robots.txt gaat samenstellen, dan kun je snel de fout in gaan. Je kunt ineens mappen gaan blokkeren voor bots terwijl je dat niet wilt. Het is daarom verstandig dit systematisch aan te pakken. Pak desnoods een vel papier en outline welke bots welke mappen/bestanden niet mag indexeren.

Wat ook erg belangrijk is, is dat robots.txt case-sensitive is. Met andere woorden, hoofdletters en kleine letters in bestandsnamen/mappen worden als verschillende bestanden/mappen gezien. Het bovenstaande voorbeeld geeft aan dat de laatste drie regels niet hetzelfde zijn. De drie exclusion regels worden als drie verschillende regels gezien, omdat de bestandsnamen verschillend zijn.

Inclusion Rules: Allow

De Googlebot kent ook nog een nieuwe feature, namelijk de inclusion feature (tegenover gestelde van de exclusion feature, disallow). In plaats van zeggen welke mappen en bestanden de Googlebot niet mag indexeren, kun je ook aangeven welke bestanden wel in de index mogen komen. Dit doe je met de Allow commando. Een voorbeeld staat hieronder:

CODE:
  1. User-agent: Googlebot
  2. Disallow: /
  3. Allow: /directory/

NOOT: Alleen Google bots kennen de inclusion regel.

Hiermee geef je aan dat de Googlebot geen enkele bestand mag indexeren, behalve de bestanden in de map directory. Waarom zou je de inclusion regel willen gebruiken? Dit is vooral handig voor de Google AdSense bot. Stel je voor dat de Googlebot niet een directory mag indexeren, maar je wilt wel de AdSense advertenties weergeven. Dan kun je hetvolgende robots.txt gebruiken.

CODE:
  1. User-agent: Googlebot
  2. Disallow: /tags/
  3. # MediaPartners-Google = AdSense bot
  4. User-agent: MediaPartners-Google
  5. Allow: /tags/

Een ander scenario zou kunnen zijn dat je de hele directory wilt afschermen voor spidebots, behalve voor een enkel bestand in die directory. Dan komt een Allow dus goed uit. Je zou dan het volgende doen:

CODE:
  1. User-agent: Googlebot
  2. Disallow: /tags/
  3. Allow: /tags/seo.html

Ook al staat aangegeven dat de hele directory is afgeschermd, de inclusion laat toe dat een bestand in een afgeschermde directory mag worden geindexeerd.

robots.txt is niet voor beveiliging!

robots.txt is niet bedoeld voor beveiligingsdoeleinden! Dat de spiderbots niet de bestanden indexeert betekent niet dat je bestanden veilig verborgen zijn. Immers kan iedereen je robots.txt lezen, tenzij je die cloakt. Als je je bestanden veilig opgeborgen wilt hebben, plaats deze dan niet online.

Upload altijd een robots.txt

De laatste tip die ik wil geven is dit: upload altijd een robots.txt, ookal is deze leeg (dat betekent dus dat spiderbots alles mogen indexeren). Er gaat een fabel rond dat als je geen robots.txt uploadt, dan krijgen sommige spiderbots problemen met het indexeren van je website. Deze fabel is niet waar. Waarom dit advies wordt gegeven is simpelweg voor bandbreedte redenen. Elke keer dat een spiderbot geen robots.txt kan vinden, dan krijg je een 404 en dat betekent laaaaangggeee error logs. Want een spiderbot komt vaak langs als je website een beetje PageRank heeft. Om dataverkeer te besparen kun je het beste altijd een robots.txt op je webserver zetten.

Valideer je robots.txt

Wat je zeker wilt doen is altijd je robots.txt valideren. Dan kan met behulp van Robots.txt Checker. Daarnaast kan je bij Google Webmaster Central ook je zien of alles correct is met Google's robots.txt validator.

Google Webmaster Central Robots.txt Validator

Er zijn nog meer gevorderde mogelijkheden voor robots.txt. Ook zal ik laten zien hoe je robots.txt moet gebruiken om duplicate content te voorkomen. Dat allemaal komt een andere keer aan bod.

Tags:

Oude Meta Description Weghalen met NOODP

Heb jij een website waarbij de meta description maar hetzelfde blijft? Ondanks dat je meedere keren de meta description hebt veranderd, blijft deze maar hetzelfde in de Google index? Dit is een vaak voorkomende probleem. De meta description is wel correct in de Yahoo! en Live index, maar niet in de Google index. Oplossing?

DMOZ

Dit probleem heeft te maken met de Open Directory Project aka DMOZ. De website, met de oude meta description, heeft een beschrijving en een link in de ODP listings. De Googlebot heeft bij het crawlen deze beschrijving overgenomen en dan zit je vast met deze beschrijving. Je kunt dan zovaak je meta description veranderen als je maar wilt, de beschrijving blijft hetzelfde. De oplossing hiervoor is simpel, voeg deze HTML toe.

HTML:
  1. <meta name="GOOGLEBOT" content="NOODP">

Hiermee vertel je expliciet aan de Googlebot dat hij niet de beschrijving moet nemen van ODP, maar van jouw meta description. Bij de volgende crawl (kan paar dagen duren, maar ook enkele weken) zul je zien dat je meta description is veranderd in de Google index en dan ben jij weer blij :-)

Yahoo! en Live gebruiken sowieso geen ODP, dus deze tag hieronder is onnodig omdat alleen de Googlebot hiermee stoeit.

HTML:
  1. <meta name="ROBOTS" content="NOODP">

Voor het lanceren van nieuwe websites hoef je geen zorgen te maken over NOODP. Je meta keywords en descriptions zijn genoeg!

Tags:

Verborgen teksten truken

Sommigen van jullie zullen deze techniek wel kennen. Met CSS, cascading style sheets, kun je ervoor zorgen dat tekst verborgen blijft voor de lezer, maar niet voor de crawlers. Dat kan heel makkelijk met een hidden div of de tekst dezelfde kleur geven aan de achtergrond. Maar er zijn nog meer manieren!


verborgen teksten zijn teksten die de lezer niet kan lezen, maar de crawlers wel. Wat denkt Google hierover? Op de spamreport pagina staat:

Trying to deceive (spam) our web crawler by means of hidden text, deceptive cloaking or doorway pages compromises the quality of our results and degrades the search experience for everyone. We think that's a bad hing.

Eerst zal ik eerst even wat schrijven over de oude hidden div techniek. Voor diegenen die de oude techniek niet kennen, ik zal het kort uitleggen. De meeste gebruikte methode om teksten onzichtbaar te maken is met de hidden div. Je zet de display op 'none' en alles wat in de div zit is niet zichtbaar voor de lezer. Crawlers kunnen dit wel lezen, het staat immers in de broncode en indexeren
deze teksten dus ook. Een voorbeeld:

HTML:
  1. <title>SEOKING.nl</title>
  2. <style>#geheim {display: none; visibility: hidden;}</style>
  3. </head>
  4. <p>De tekst hier kan je lezen</p>
  5. <div id="geheim">Dit zie je niet</div>
  6. </body>
  7. </html>

(De display en visibility property kun je beiden apart gebruiken.) Deze methode werkte jaren geleden, maar inmiddels niet meer. Nog steeds zul je veel sites zien die dit gebruiken, maar die zullen later wel opgepakt worden.

Maar sommigen denken dat ze weer te slim voor big G en denken dat ze wel deze oude techniek nog kunnen gebruiken. Wat doen ze? In robots.txt zorgen ze ervoor dat de crawler geen toegang krijgt tot het CSS bestand. Ze zetten dus zoiets in robots.txt:

Disallow: /stylesheet.css

Nu de crawler geen toegang heeft tot het CSS bestand, hoe kan dan de crawler erachter komen of de website een hidden div truuk gebruikt? Dat kan het niet. Google is natuurlijk bekend met deze techniek dus hier zullen zij ook wel een oplossing voor bedenken.
Hmmm, stiekem hebben ze die ook. Ook al staat er in robots.txt dat het CSS bestand niet geindexeerd mag worden, soms negeren crawlers die regel. Zij indexeren dan wel gewoon het CSS bestand. Als jij een van diegene bent die deze truuk gebruikt, check je logs maar eens of het CSS bestand door de crawler wordt opgepikt. Busted?

Een variant op de hidden div is met layers. Met de z-index property kun je aangeven welke layers 'over elkaar heen zitten'. Door een layer bovenop je div te zetten met alle keywords kun je zo dus ook tekst verbergen.

Een van de nuftige CSS mogelijkheden is text-indent. Hiermee kun je ook verborgen teksten hebben in div's. Zet text-indent: -999px; en de teksten in je div zijn niet zichtbaar op het scherm. Op het moment van schrijven werkt deze methode nog, maar zal ongetwijfeld binnenkort niet werken.

Een ander oude truuk is de tekst dezelfde kleur te geven als de achtergrond. Deze techniek is wel heel makkelijk te achterhalen en moet dus ook niet meer gebruikt worden. Maar dezelfde techniek met een kleine aanpassing kan nog gebruikt worden. Het wordt al een stuk moeilijker voor crawlers als je achtergrond afbeeldingen gaat gebruiken. Je moet dus zorgen dat de afbeelding dezelfde kleur heeft als de tekst en voila. Tot nu toe zijn de crawlers nog niet in staat deze truuk te achterhalen, dus gebruik het nu je het nog kan.

Crawlers kunnen geen javascript lezen en dat is een voordeel voor ons. Met javascript kun je ook div's op hidden zetten. Viva la javascript! Een simpel voorbeeld:

JavaScript:
  1. <script language="JavaScript" type="text/javascript">
  2. document.getElementById('geheim').style.display = "none";
  3. </script>

Meeste gebruikers hebben tegenwoordig Javascript ondersteuning, dus deze truuk werkt vaak wel. Een andere manier is het gebruik van de noscript element. Gebruikers met javascript zullen de tekst tussen de noscript tags niet zien, maar de crawlers wel.

HTML:
  1. <noscript>Dit leest een crawler wel, maar een bezoeker met js niet.</noscript>

Zo, weer wat nuftige technieken geleerd voor je SEO kennis. Er zal tal van mogelijkheden met verborgen teksten. Mix deze technieken allemaal met elkaar en het is bijna niet te detecteren door crawlers. Obfuscate en scramble om het nog meer verborgen te houden. The sky is the limit.

Tags: