Statisch
Een sitemap is een XML-bestand waarmee websites geautomatiseerd kunnen worden verkend door bijvoorbeeld een zoekmachine-bot. In dit bestand worden alle pagina's (URL's) opgenoemd, eventueel voorzien van hun datum van laatste wijziging. Een eenvoudig voorbeeld:
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://example.com/</loc>
</url>
<url>
<loc>https://example.com/contact</loc>
</url>
<url>
<loc>https://example.com/weblog</loc>
</url>
</urlset>
Dynamisch
Een eenvoudige sitemap bestaat uit statische URL's, pagina's waarvan het adres nooit wijzigt. Maar, wat als je een aantal dynamische pagina's - zoals een weblog - wil laten indexeren door de zoekmachines? Een script dat zo'n sitemap produceert zou er bijvoorbeeld als volgt kunnen uitzien:
<?php
$blogs = ...
$urlPrefix = 'https://example.com/blog';
$doc = new \DOMDocument();
$doc->formatOutput = true;
$doc->encoding = 'UTF-8';
$root = $doc->createElement('urlset');
$root->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
$root->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$root->setAttribute(
'xsi:schemaLocation',
'http://www.sitemaps.org/schemas/sitemap/0.9 '.
'http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'
);
$root = $doc->appendChild($root);
$nodeUrl = $doc->createElement('url');
$nodeLoc = $doc->createElement('loc', $urlPrefix);
$nodeUrl->appendChild($nodeLoc);
$root->appendChild($nodeUrl);
foreach ($blogs as $blog) {
$nodeUrl = $doc->createElement('url');
$nodeLoc = $doc->createElement('loc', $urlPrefix.'/'.$blog->getSeoTitle());
$nodeUrl->appendChild($nodeLoc);
$nodeLastMod = $doc->createElement(
'lastmod',
$blog->getDateTime()->format(\DateTime::W3C)
);
$nodeUrl->appendChild($nodeLastMod);
$root->appendChild($nodeUrl);
}
header('Content-Type:application/xml');
print $doc->saveXML();
exit;
Combinatie
Tot slot kun je beide varianten ook nog combineren (zie hieronder). De eerste
loc
verwijst naar een eenvoudig XML-bestand met alle statische pagina's
(home, contact…). De laatste loc
verwijst naar het script dat een XML-bestand
produceert op het moment van opvragen.
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-static.xml</loc>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap.php</loc>
</sitemap>
</sitemapindex>
Dit bestand noem je sitemap.xml
en meldt het aan bij bijvoorbeeld Google
Webmaster Tools. Vanaf dat moment zal Google zowel de statische als
dynamische pagina's van de website bezoeken en eventueel indexeren.