XML-sitemaps voor het aansturen van zoekmachines

Het is en blijft belangrijk dat je site goed vindbaar is voor potentiële bezoekers. Dat betekent dat je site 'goed' moet worden weergegeven in de zoekmachineresultaten.
Dat betekent op zijn beurt dat zoekmachines goed in staat moeten zijn om de juiste pagina's van je site op te nemen in hun indexen.

Het is mogelijk om direct aan de webbots te vertellen welke pagina's geïndexeerd moeten worden en welke pagina's kunnen worden overgeslagen. Dat doe je door een door een speciale sitemap te maken, die alleen bestemd is om door zoekmachines te worden gebruikt.

Op deze pagina wordt uitgelegd hoe de XML-code van zo'n sitemap is opgebouwd en hoe je die kunt laten gebruiken voor het aansturen van zoekmachines.

Het aansturen van zoekmachines.
(Zie ook het item Je website laten indexeren door zoekmachines).
Dit kun je van twee kanten benaderen: Je kunt zeggen welke delen van je site niet mogen worden geïndexeerd en je kunt zeggen welke pagina's juist wél zouden moeten worden geïndexeerd.

Waarom zou je zoekmachines apart moeten aansturen?
De gedachte dat zoekmachines elke site zonder hulp zouden moeten kunnen indexeren, ligt voor de hand. Maar de praktijk is hier nogal weerbarstig. Webcrawlers kunnen niet uit de voeten met sites die zijn opgemaakt met frames. Ook kunnen ze niet overweg met moderne technieken zoals AJAX, Silverlight en Flash.
Door een XML-sitemap te maken kan dit soort sites toch goed worden geïndexeerd.

Indexering beïnvloeden
Er zijn vier methodes om de indexering van je site te beïnvloeden:

  1. Maak een file robots.txt en zet die in de root (het beginpunt) van je website.
  2. Zet een tag <meta name="robots" content="......" in de <HEAD> van elke afzonderlijke pagina van je site.
  3. Maak een sitemap. Zorg ervoor dat die altijd 100% juist is. Je kunt zo'n sitemap op twee manieren opzetten:
  1. Als hulp voor je bezoekers. Als een webcrawler zo'n sitemap vindt zal deze proberen om de pagina's te vinden die in de sitemap staan. Zorg er dus voor dat werkelijk elke pagina (.html, .asp, .php, .…) daarmee gevonden kan worden.
    Gebruik in zo'n sitemap echter geen JavaScript, maar alleen tekst-links in <A>-tags (dus geen plaatjes). JavaScript wordt door de meeste (zo niet alle) webcrawlers genegeerd. Sitemaps met JavaScript helpen dus niet om je site beter in de indexen te krijgen.
    De sitemap van deze site voldoet aan deze richtlijn. Hij is echter alleen bedoeld als hulp voor bezoekers. Daarom leidt deze sitemap je door de navigatie op de hoogste niveaus. De echte informatie is er niet direct mee bereikbaar. Maar dat is ook niet handig als je meer dan 300 informatie-pagina's hebt...
     
  2. Als gids voor de zoekmachines. De bezoekers van je site kunnen dit soort sitemap niet gebruiken.
    Dit type sitemap is niet meer dat een opsomming van de bladzijden waarvan jij vindt dat ze geïndexeerd moeten worden. De sitemap wordt geschreven in XML en bevat geen opmaak.

De punten i en ii van deze opsomming worden uitgebreid besproken in het item
Je website laten indexeren door zoekmachines.
Punt iiia wordt besproken in het item Een Sitemap maken.
Punt iiib komt komt hieronder aan de orde.

Welke benadering is de beste?
Elk van de vier benaderingen heeft voordelen en nadelen. Het beste is om ze allemaal te gebruiken voor zover dat logisch en zinvol is. Wees in elk geval consistent: Als je een bestand opneemt in een XML-sitemap om het te laten indexeren maar het uitsluit in robots.txt, weet de webcrawler niet wat hij er er mee te doen. Dat betekent altijd: niet indexeren.

De achtergronden van XML-sitemaps.
De XML-sitemaps zijn bedacht in de jaren 2005-2007. Ze worden gepromoot door sitemaps.org. De huidige versie van het protocol is 0.9. De website is al langere tijd niet meer veranderd. Dat betekent dat versie 0.9 standaard is geworden.
Google was de eerste die deze techniek beschikbaar stelde voor webmasters. Bing (= MSN = Microsoft) en Yahoo volgden al spoedig. Van andere zoekmachines is niet bekend of ze deze techniek gebruiken of niet. Ik heb de indruk dat dat wel het geval is.

De tags in een XML-sitemap.
De XML lijkt veel op HTML. Het bestaat uit een DTD (Document Type Declaration) voor de XML, gevolgd door een opsomming van de te indexeren URL's.
De opsomming staat binnen de tag <urlset> .... </urlset>. Binnen die tag is er voor elke URL een blok informatie voor de webcrawler:

Tag Betekenins
loc 
Volledige URL van het te indexeren bestand, dus inclusief http:// of https://. Relatieve paden zijn niet mogelijk. Deze tag is verplicht.
lastmod 
Datum van de laatste wijziging van het bestand, in het formaat jjjj-mm-dd. Als je ook het tijdstip wilt toevoegen kun je de volledige W3C tijdnotatie toepassen.
Deze tag is alleen nodig voor bestanden die relatief vaak wijzigen, en is daarom optioneel. In redelijk statische websites (dat zijn de meeste) kun je lastmod weglaten.
changefreq 
Hiermee geef je aan hoe vaak deze pagina -gemiddeld- verandert. Het is dus een hint voor de crawler wanneer hij terug moet komen. Je gebruikt hier een keyword voor:
  • always :  Het bestand moet worden geïndexeerd bij elk bezoek.
  • hourly :  Het bestand moet elk uur worden geïndexeerd.
  • daily :  Het bestand moet elke dag worden geïndexeerd.
  • weekly :  Het bestand moet elke week worden geïndexeerd.
  • monthly :  Het bestand moet elke maand worden geïndexeerd.
  • yearly :  Het bestand moet elk jaar worden geïndexeerd.
  • never :  Het bestand moet nooit worden geïndexeerd.
Het is aan de webcrawler om te beslissen of hij inderdaad terugkomt zoals het keyword aangeeft. Als het veel en vaak afwijkt van wat er werkelijk gebeurt, zal het een negatieve invloed heben op het bezoek van de crawler.
Het keyword never is bedoeld voor archieven, dus statische informatie die nooit verandert. De crawler zal deze pagina's toch indexeren, als was het alleen maar om het archief bij te werken.
Deze tag is optioneel. Mijn ervaring is dat de indexering prima verloopt en goed wordt bijgehouden als je changefreq weglaat.
 
Zaken die je niet geïndexeerd wilt hebben moet je uit de XML-sitemap weglaten, noemen in robots.txt en voorzien van een geschikt <meta>-tag. Het keyword never is hier niet geschikt voor.
priority 
Hiermee geef je aan welk belang je zelf aan de inhoud van de pagina toekent. Webcrawlers hoeven dat niet te volgen.
Deze tag is optioneel. priority is een getal tussen 0.1 (= minst belangrijk) en 1.0 (= meest belangrijk). Als je priority weglaat wordt 0.5 gebruikt.

Ervaring leert dat als je de optionele tags <lastmod>, <changefreq> en <priority> niet goed gebruikt, ze de indexering van je site negatief beïnvloeden. Je kunt ze het beste weglaten. Voor de meeste sites is het voldoende om alleen <loc> op te geven en het daarbij te laten.

Het is mogelijk om meer dan één sitemap te hebben voor dezelfde site. Op het moment dat dit geschreven wordt heeft deze site er vijf:

File Sitemap bevat:
sitemap.xml 
Alle bestanden die niet in de HTML-module van deze site zijn opgenomen.
html-0.xml 
Bestanden van html-module: nrs. 000 t.m. 099
html-1.xml 
Bestanden van html-module: nrs. 100 t.m. 199
html-2.xml 
Bestanden van html-module: nrs. 200 t.m. 299
html-3.xml 
Bestanden van html-module: nrs. 300 t.m. 399

Deze sitemaps worden alle vijf gebruikt door Google en Bing, mogelijk ook door andere zoekmachines.
Elke keer als er een nieuw item over HTML aan deze site wordt toegevoegd, wordt html-3.xml aangepast en geüpload naar de server. De crawlers nemen het nieuwe item automatisch mee bij hun volgende bezoek aan de site. Daar hoef je zelf niets extra's voor te doen.

Opbouw van een XML-sitemap
 
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.voorbeeld.nl/</loc>
<!-- Voor commentaar is de bekende HTML-tag inzetbaar -->
<!-- Omdat commentaar niet wordt herkend wordt het genegeerd -->
<lastmod>2011-07-25</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.voorbeeld.nl/plaatjes.html</loc>
<lastmod>2011-07-27</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.voorbeeld.nl/videos.html</loc>
</url>
</urlset>

Er staat hier één tag per regel. Dat bevordert de leesbaarheid, maar het is niet echt nodig. Zie het onderstaande praktijkvoorbeeld:
Dit is de XML-sitemap html-3.xml zoals die er uit ziet op het moment dat dit verhaal wordt geschreven. Dit item (html-310.htm) staat tussen commentaar-tags, omdat het nog niet klaar is.
 
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
 
<!-- home.hccnet.nl/s.f.boukes/html-3/ Zoekmachine sitemap per 27 juli 2010 -->
<!-- Auteur: Ben Boukes, Spijkenisse -->
 
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-300.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-301.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-302.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-303.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-304.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-305.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-306.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-307.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-308.htm</loc></url>
<url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-309.htm</loc></url>
<!-- <url><loc>https://home.hccnet.nl/s.f.boukes/html-3/html-310.htm</loc></url> -->
</urlset>

Een XML-sitemap bekend maken bij de zoekmachines.
Bij de huidige stand van zaken is hiet meer echt nodig om een XML-sitemap bekend te maken bij webcrawlers. Na enige tijd worden ze vanzelf gevonden. Toch is het verstandig om ze aan te melden bij de grote zoekmachines.

Behalve dit kun je ook een regel plaatsen in robots.txt:
 
Sitemap: naam_van_je_sitemap.xml
 
Dit geldt voor alle webcrawlers. Elke webcrawler die dat kan zal je XML-sitemap dan gebruiken.

Meer informatie over dit onderwerp is te vinden op sitemaps.org.

Opmerkingen:
 
Wees erop bedacht dat niet alle webcrawlers zich aan de regels houden. Alles wat zo'n crawler tegenkomt wordt geïndexeerd, óók als het wordt tegengehouden via robots.txt of een meta-tag. Als je 100% zeker wilt zijn dat bepaalde informatie niet wordt geïndexeerd moet je die informatie gewoon niet op internet beschikbaar maken.
 
Op de help-pagina's van Google wordt melding gemaakt van sitemap-extensies voor video, nieuws, geografische informatie, enz. Meestal worden dit soort zaken na verloop van tijd door andere zoekmachines overgenomen. Na verloop van nog weer wat tijd wordt het dan verheven tot standaard.

 
terug

html-310; Laatste wijziging: 30 januari 2023