Sitemaps.xml

Banner Sitemaps

Een technische uitleg in vogelvlucht over het bestand Sitemaps.xml. Dit bestand is zeer waardevol om ervoor te zorgen dat zoekmachines alles crawlen.

Sitemaps is een manier om zoekmachines te vertellen welke web pagina’s er op een web site staan. Maar dit is niet gelimiteerd tot web pagina’s. Zo kan ook afbeeldingen, video’s en nieuws mark-ups. In de simpelste vorm is een Sitemap een lijst met URL’s aangevuld met meta data. Meta data is data over data. Of meer exact meta data die hier bedoeld wordt is de beschrijvende meta data. Met andere woorden, de meta data verteld iets over wat er op de web pagina (content) is. Ook is dit niet te vergelijken met een HTML sitemap, wat een web pagina is waar de gehele web site structuur wordt uitgelegd zodat bezoekers makkelijker kunnen navigeren. In tegenstelling de code is geen HTML maar XML en heeft een specifieke mark-up.

Sitemap in vogelvlucht

Sitemaps is een open protocol en enorm ondersteund door Google vanaf juni 2005. Vanaf 16 november 2006 was de versie nummer 0.9 en Microsoft (toen hete het MSN en nu Bing), Google en Yahoo deden mee. Maar belangrijker was dat deze grote spelers gezamenlijk een open standaard hebben ontwikkeld en gezamenlijk www.sitemaps.org ondersteunen. Nog geen jaar laten op gingen ook IBM en Ask overboord. Het grote voordeel van het hebben van een open standaard is dat webmasters voor elke zoekmachine of voor elke crawler de zelfde manier kunnen gebruiken. Hierdoor wordt het web meer toegankelijk voor iedereen omdat er geen aparte manier is om voor crawlers van de specifieke bedrijven specifieke bestanden of andere werkzaamheden uit te voeren. Kortom voor een webmaster is dit de meest efficiënte manier.

Sitemaps zijn in het leven geroepen om in beginsel ervoor te zorgen dat een web pagina gevonden kan worden door web crawlers (dit zijn speciale software programma’s die het internet van link naar link door zoeken) maar secondair ook om meta data te geven. Bijvoorbeeld door aan te geven hoe vaak een bepaalde web pagina wordt up-ge-date. Hierdoor worden web pagina’s efficiënter ge-crawld en daardoor bespaart het bandbreedte voor de webmaster. Met name voor zeer grootte web sites zijn Sitemaps een must. Een web site die door middel van een content management systeem duizenden web pagina’s (URL’s) heeft en dagelijks nieuwe toevoegt kan door het gebruik maken van Sitemaps waardoor de nieuwe web pagina’s eerder worden opgemerkt door zoekmachines (crawlers) wat tot gevolg heeft dat de web index van de zoekmachines (de index wordt gebruikt om de zoekresultaten weer te geven) meer up-to-date is en daardoor kunnen zoekmachines betere zoekresultaten weergeven aan haar gebruikers. Voor zeer kleine web sites (van vijf web pagina’s bijvoorbeeld) is het niet erg nodig om een Sitemap te hebben maar het kan, natuurlijk, geen kwaad.

Het protocol van Sitemaps

Een Sitemap kan maximaal 50,000 URL’s bevatten en maximaal 10 MB groot. Volgens sitemaps.org zorgt deze limitering voor dat webmasters niet hele grootte bestanden leveren waardoor eventueel de server overloaded kan worden. Daarom is er een Sitemap index ontwikkeld waar een lijst van URL’s naar de verschillende Sitemaps staat. De Sitemap index kan maximaal duizend URL’s bevatten. Dus, in het kort, als een web site meer dan 50,000 URL’s heeft of als de web site zal uitgroeien tot meer dan 50,000 URL’s dan dient de webmaster gebruik te maken van een Sitemap index.

Sitemap index

Het voorbeeld dat sitemaps.org gebruikt is:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://www.example.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>

De eerste lijn is verplicht en geeft aan dat het een xml-bestand is en dat het een UTF-8 encoding is. De UTF-8 encoding is de enige encoding die gebruikt kan worden voor Sitemaps en Sitemaps index. Ook is UTF-8 de dominante encoding op het internet. De tweede lijn (tag: <sitmapindex>) is ook verplicht. Hier wordt verteld dat de Sitemaps schema wordt gebruikt. En omdat het een xml-formaat is dient er een closing-tag te zijn, namelijk </sitemapindex>. De derde tag (<sitemap>) is verplicht. Deze tag geeft aan dat er een Sitemap is en elke Sitemap dient vooraf te gaan met deze tag. De vierde tag (<loc>) is wederom verplicht. De loc tag geeft aan waar de Sitemap zich bevindt. Hier wordt dus de URL gegeven van waar de Sitemap zich bevindt. De laatste tag (<lastmod>) is optioneel en de datum/tijd dient in W3C-formaat te zijn. Hoewel deze tag niet verplicht is kan het zeker handig zijn. Namelijk zoekmachines slaan deze gegevens op en als ze (de crawlers) zien dat een bepaalde datum nieuwer is dan de gene die ze in hun database hebben dan kunnen ze alleen de Sitemap die veranderd is crawlen en laten ze de andere Sitemaps met rust. Met andere, door gebruik te maken van lastmod kunnen zoekmachines efficienter crawlen en crawlen ze alleen die bestanden die sinds het laatste bezoek zijn veranderd.

Sitemap

Het voorbeeld dat sitemaps.org geeft is:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

Net zoals onder Sitemap index zijn de eerste twee lijnen verplicht maar in plaats van de tag <sitemapindex> wordt de tag <urlset> gebruikt. Immers het gaat hierover URL’s. De volgende tag is <url> en is ook verplicht. Deze tag geeft aan dat er een URL komt. De tag <loc> is wederom verplicht en daar wordt de URL weergegeven. Net zoals bij de Sitemap index is <lastmod> optioneel en geeft aan wanneer een URL voor het laatst is up-ge-date en dient in W3C datum/tijd formaat te zijn. De <changefreq> is ook optioneel en geeft aan hoe vaak de web pagina veranderd. De waarde kan het volgende zijn:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

De changefreq is een suggestie of een hint aan zoekmachines waarbij de webmaster aangeeft hoe vaak de inhoud van de web pagina waarschijnlijk veranderd. De <priority> is optioneel en geeft aan hoe belangrijk een bepaalde web pagina in de web site. Wederom is dit een suggestie of een hint. De waarde kan van 0.0 tot 1.0 (gebruik een punt en niet een komma) zijn en de standaard waarde is 0.5. De waarde is relatief dat wil zeggen hiermee geeft de webmaster aan hoe belangrijk een bepaalde web pagina is relatief tegenover de gehele web site en daarom is het niet handig om alle URL’s op 1.0 te zetten. Immers dat is ongeveer het zelfde als alles op 0.5 of een op andere waarde te zetten. Ook heeft deze tag geen invloed op de positie in de zoekresultaten. Maar zoekmachines kunnen, net zoals <lastmod> en <changefreq>, gebruiken om te bepalen welke web pagina’s er vaker of meer frequent dienen te worden ge-crawld.

Locatie

De locatie van een Sitemap is over het algemeen de root, zoals example.com/sitemap.xml. Maar de Sitemap kan zich ook bevinden in een sub-folder waarbij de URL’s in de Sitemap alleen de URL’s zijn uit die sub-folder. Bijvoorbeeld, de example.com/blog/sitemap.xml kan de URL example.com/blog/mijnartikel.html bevatten maar niet example.com/forum/eenpost.html. Immers de laatste bevindt zich in een andere sub-folder.

Het is wel mogelijk om een Sitemap ergens anders te hosten dan op de domein waar de Sitemap over gaat. Hiervoor is het nodig dat de webmaster in de robots.txt de Sitemap toevoegt en aangeeft dat die ergens anders gehost wordt. Doordat de locatie wordt weergegeven op de web site zelf heeft de webmaster impliciet de Sitemap aangemerkt als zijn eigendom en daardoor geverifieerd. Bijvoorbeeld aan example.org/robots.txt wordt de volgende lijn toegevoegd:

Sitemap: http://example.com/org-sitemap.xml

Hierbij moet wel worden aangemerkt dat de URL’s in deze Sitemap of Sitemapindex aan de domain zijn gekoppeld. In het voorbeeld is dit example.org.

Specialized Sitemaps

Naast de web pagina’s bestaan er ook specifieke Sitemap tags voor specifieke situaties. Ik zal hier kijken naar twee gespecialiseerde Sitemaps, namelijk voor afbeeldingen en voor taal of regio. Waar ik niet naar zal kijken is nieuws, video’s en mobiel. De rede waarom ik voor deze twee kies is omdat deze over het algemeen vaker voorkomen of in ten minste voor web sites waar ik voor werk. In tegenstelling tot de Sitemaps hierboven kan het zijn dat bepaalde zoekmachines deze speciale Sitemaps niet ondersteunen en ze zijn ook geen onderdeel van de gezamenlijk sitemaps.org.

Afbeeldingen

Het voorbeeld die Google geeft is (iets aangepast en met aanvullende tags):

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>http://example.com/sample.html</loc>
<image:image>
<image:loc>http://example.com/mijnkat.jpg</image:loc>
<image:caption>Een middel grootte kat spelend op een grasveld</image:caption>
<image:geo_location>Rotterdam, The Netherlands</image:geo_location>
<image:title>Mijn kat</image:title>
<image:licence>http://creativecommons.org/licenses/by-nd/3.0/legalcode</image:licence>
</image:image>
</url>
</urlset>

In de <urlset> tag wordt het volgende toegevoegd (in het voorbeeld is deze in vet gedrukt): xmlns:image=”http://www.google.com/schemas/sitemap-image/1.1″. Hiermee wordt aangegeven dat er naast de sitemaps.org schema nog een ander schema dient te worden gebruikt. Voor afbeeldingen is dat een Google schema. Net zoals bij de “normale” Sitemap komen de gebruikelijke tags voor waarna de speciale tags voor afbeeldingen volgen. Het maximaal aantal afbeeldingen is duizend en de afbeeldingen dienen op de web pagina te staan. Dat wil zeggen, de afbeeldingen die op de URL staan welke wordt weergegeven in de tag <loc>. Elke afbeelding wordt vooraf gegaan door <image:image>, deze is verplicht en het wordt afgesloten voor de </url> met </image:image>.

  • De <image:loc> is ook een verplichte tag. Hierin wordt de URL gegeven naar de afbeelding.
  • De <image:caption> is optioneel. De webmaster kan hier een beschrijving geven van de afbeelding.
  • De <image:geo_location> is optioneel en geeft aan waar de afbeelding is gemaakt. In het voorbeeld is het Rotterdam, the Netherlands.
  • De volgende is ook optioneel, <image:title>. Hier geeft de webmasters de titel weer.
  • <image:licence> is optioneel en geeft aan welke licentie er op de afbeelding is. In het voorbeeld hierboven is dat Creative Commons. Dit is een populaire open source licentie.

Tot slot, zoals al gehint is dit schema van Google en het is zeer zeker mogelijk dat andere zoekmachines dit niet ondersteunen. Op dit moment ondersteund Bing (de zoekmachine van Microsoft) deze mark-up niet.

Land en regio

Dit is een vrij nieuwe speciale Sitemap en is op 24 mei 2012 gelanceerd door Google. Met dit schema kan de webmaster aangeven in de Sitemap waar de specifieke URL’s zijn voor een specifieke land en/of specifieke regio. Als iemand bijvoorbeeld zoekt in het Nederlands op google.nl kan zal Google niet de Engelse versie van een web pagina weergeven maar de Nederlandse. Met andere woorden, hiermee geeft de webmaster aan welke web pagina’s alternatieven zijn voor een bepaalde taal en/of regio. Het voorbeeld die Google gebruikt is:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>http://www.example.com/english/</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/"
/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-deutsch/"
/>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/"
/>
</url>

<url>
<loc>http://www.example.com/deutsch/</loc>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/"
/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-deutsch/"
/>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/"
/>
</url>

<url>
<loc>http://www.example.com/schweiz-deutsch/</loc>
<xhtml:link
rel="alternate"
hreflang="de"
href="http://www.example.com/deutsch/"
/>
<xhtml:link
rel="alternate"
hreflang="en"
href="http://www.example.com/english/"
/>
<xhtml:link
rel="alternate"
hreflang="de-ch"
href="http://www.example.com/schweiz-deutsch/"
/>
</url>
</urlset>

Net zoals bij afbeeldingen dient er een extra schema te worden toegevoegd aan namelijk: xmlns:xhtml=”http://www.w3.org/1999/xhtml”. Ook hierbij geldt dat voor elke URL er een aparte ingang wordt gemaakt voor de alternatieve talen en/of regio’s. In tegenstelling tot de afbeeldingen geldt hier niet dat elke keer een nieuwe tag wordt aangemaakt. Er is één tag, namelijk <xhtml: /> met verschillende onderdelen of attributen. De attributen zijn allemaal verplicht:

  • rel=”alternate” Hiermee wordt aangegeven dat er een alternatief is.
  • hreflang=”de-ch” Hierbij geeft de webmaster aan voor welke taal, de eerste twee letters en in dit voorbeeld is dat “de” voor Duits, en welke regio, de laatste twee letters, in dit voorbeeld is dat “ch” voor Zwitserland. Het weergeven van de taal is verplicht en de regio is optioneel. De taal dient een iso-639-1 te zijn en voor de regio dient de webmaster gebruik te maken van de official assigned iso-3166-1 alpha 1.
  • href=”http://www.example.com/schweiz-deutsch/” Hier wordt de URL weergegeven waar het alternatieve web pagina voor een bepaalde taal en/of regio bevindt.

Net zoals bij de afbeeldingen Sitemap is dit niet geldig voor veel andere zoekmachines buiten Google Search en daardoor is het ook geen onderdeel van sitemaps.org. Daarnaast dienen de alternatieven niet automatisch te zijn vertaald en het is “best practice” om voor de verschillende regio’s unieke content te hebben en opmaat aanbiedingen die specifiek voor een bepaalde regio zijn.

Tot slot,

De verschillende specialized Sitemaps kunnen worden gecombineerd. Als we naar de hierboven bekeken speciale Sitemaps dan dient de Sitemap te beginnen met:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1>

Hiermee kan de webmaster de verschillende mark-ups combineren. Echter het kan zijn dat buiten Google andere zoekmachines hier problemen mee hebben.

Gelukkig hebben de meeste content management systeems tegenwoordig een Sitemap generator die er al standaard in zit of gemakkelijk via een plugin kan worden toegevoegd aan de content management systeem. Met betrekking tot Sitemaps zoals die wordt weergegeven in sitemaps.org heb ik hier bijna alles behandeld, maar ook daar missen een aantal dingen zoals entity escaping. Verder zijn er, zoals hierboven al gehint veel meer speciale Sitemaps, maar daar is tussen de verschillende zoekmachines geen gezamenlijke overeenstemming over.

Tot slot, de URL’s die in de Sitemaps worden weergegeven zijn een signaal voor zoekmachines dat die URL’s de canonieke URL’s zijn. Dit wil zeggen, deze URL’s zijn een signaal over wat de URL’s dient te zijn in de zoekresultaten. Denk hier, bijvoorbeeld, aan www versus geen-www waarbij een web pagina zowel via www als via geen-www toegankelijk is. Als er via de Sitemap de URL als www wordt weergegeven dan is het aannemelijk dat een zoekmachine de www URL gebruikt en niet de geen-www.

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>