XML-Sitemap

Denna artikel är helt omskriven den 2017-08-17 (den publicerades först 2009-05-07).

Vad är en XML-sitemap

En XML-sitemap är ett XML-dokument utformat enligt protokollet för XML-sitemaps som ligger på din webbplats och används av sökmotorer för att läsa av vilka URLer din webbplats består av, när de ändras och deras inbördes prioritet för att crawla (spindla) och indexera din webbplats på rätt sätt.

Det introducerades av Google 2005 och började stödjas av andra sökmotorer året efter.

En del viktiga fakta

Tips!

Företaget TodaysWeb erbjuder riktigt grym länkbygge till svenska företag. Tjänsten är utvecklad av Jim Westergren och inkluderar även en ingående on-page rapport. Läs mer på Sökmotoroptimering.nu.

Verktyg för att generera en XML-Sitemap

Du ska generera din XML-sitemap dynamiskt, så att den alltid är aktuell (cache är givetvis ok). Använder du ett CMS och det finns plugins, moduler eller annat för att dynamiskt generera en XML-sitemap för detta så använd givetvis det. URLerna ska alltså hämtas dynamiskt från din databas minst en gång per dag.

Använd inte XML-Sitemaps.com och liknande tjänster

Dessa gör förmodligen mer skada än nytta!

En XML-sitemap är till för att hjälpa Google och andra sökmotorer att crawla och indexera. Den crawler som Google använder är den mesta avancerade och sofistikerade som finns i världen. Om du använder en online-tjänst som crawlar din webbplats och ger dig en statisk fil att ladda ner får du 3 problem:

  1. Din XML-fil kommer inte vara uppdaterad. Nya URLer kommer till exempel inte finnas med.
  2. Den crawler som har använts är inte lika bra som Googles och förmodligen saknas många URLer.
  3. En crawler online kan omöjligen sätta rätt värden på lastmod, changefreq och priority.

Exempel på hur en XML-sitemap ser ut

Exempel för 2 URLer med alla valfria element

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>https://www.exempel.se/sidan1.php</loc>
      <lastmod>2008-11-23</lastmod>
      <changefreq>daily</changefreq>
      <priority>0.8</priority>
   </url>
   <url>
      <loc>https://www.exempel.se/sidan2.php</loc>
      <lastmod>2008-11-15</lastmod>
      <changefreq>weekly</changefreq>
      <priority>0.4</priority>
   </url>
</urlset>
Exempel för 2 URLer utan valfria element

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>https://www.exempel.se/sidan1.php</loc>
   </url>
   <url>
      <loc>https://www.exempel.se/sidan2.php</loc>
   </url>
</urlset> 

Förklaring av elementet priority

Jag ska börja med att direkt säga att man inte rankar högre i Google om man sätter alla sina URLer som högsta prioritet.

För det första handlar priority om crawling och inte rank. För det andra är det är ett relativt värde mellan 0.0 till 1.0 på hur viktig URLen är jämfört med andra URLer inom samma webbplats.

Eftersom värdet är relativt mellan varandra betyder det att om alla är satt som 1.0 är det samma som alla är 0.0 - alltså att alla URLer är lika viktiga. Om 1 URL är på 1.0 och resten 0.0 skulle det betyda att den på 1.0 var väldigt mycket viktigare än alla de andra.

Alla domännamn har en viss crawl budget av Google. En dagstidning till exempel kan förslagsvis sätta hög prioritet på nya artiklar och låg prioritet på gamla artiklar som inte längre uppdateras.

Förklaring av andra element

Hur du skickar in till sökmotorer

Det finns olika sätt att låta sökmotorerna veta vart din sitemap finns.

Exempel hur man kan generera med PHP

<?php 
header('Content-type: application/xml; charset="utf-8"',true);
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<urlset xmlns=\"https://www.sitemaps.org/schemas/sitemap/0.9\">\n";

// URL typ 1:
$result = $conn->query("SELECT ...");
while($row = $result->fetch_assoc()) {
	echo "	<url>\n";
	echo "		<loc>https://www.exempel.se/".$row['url']."</loc>\n";
	echo "		<lastmod>".date("Y-m-d", $row['lastmodified']); echo "</lastmod>n";
	echo "	</url>\n";
}
echo "</urlset>";

// URL typ 2:
$result = $conn->query("SELECT ...");
while($row = $result->fetch_assoc()) {
	echo "	<url>\n";
	echo "		<loc>https://www.exempel.se/".$row['url']."</loc>\n";
	echo "		<lastmod>".date("Y-m-d", $row['lastmodified']); echo "</lastmod>n";
	echo "	</url>\n";
}
echo "</urlset>";
?>

Andra tips om du själv ska generera den

  • Tänk på att filen måste sparas som UTF-8 och att tecken såsom &,',",> och < måste konverteras korrekt.
  • Din XML-sitemap bör ligga på rooten, alltså: https://www.exempel.se/sitemap.xml
  • En XML-sitemap kan komprimeras med gzip (exempelvis med PHP).
  • Ange rätt URLer

    Detta är ett typiskt misstag jag ser ofta. Det är givetvis de kanoniska URLer som man ska ha med.

    Hur du validerar och kontrollerar din XML-sitemap

    Detta är framför allt om du själv byggt ett skript som genererar din XML-sitemap. Kontrollera att allt är ok med The W3C Markup Validation Service och sedan skicka givetvis in den i Google Search Console här och se vilken status den får där. Jämför siffran mellan skickade och indexerade - undersök om någor inte stämmer om det är en stor skillnad.

    Jämför framförallt med siffran över antalet indexerade URLer. Är det fler antal indexerade än antalet du har skickat in? Har du glömt att ange URLer i din XML-sitemap? Eller finns det andra problem som gör att det indexeras URLer som inte ska indexeras?

    Gör din XML-sitemap användbar för vanliga människor

    Med metoden som kallas XSLT kan du programmera, lägga in HTML och lägga in CSS för din XML-sitemap så att den även kan användas av riktiga besökare.

    Eftersom SEO-guide.se är byggt av systemet N.nu så är detta redan automatiskt fixat för denna webbplats. Kolla själva på www.seo-guide.se/sitemap.xml

    Fler exempel: här, här och här.

    Användning av en XML-sitemap indexfil

    Med denna speciella varianten knyter du samman flera olika XML-sitemap filer.

    Exempel av en XML-sitemap indexfil
    
    <?xml version="1.0" encoding="UTF-8"?>
    <sitemapindex xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
       <sitemap>
          <loc>https://www.exempel.se/sitemap.xml</loc>
       </sitemap>
       <sitemap>
          <loc>https://www.exempel.se/blogg/sitemap.xml</loc>
       </sitemap>
       <sitemap>
          <loc>https://www.exempel.se/forum/sitemap.xml</loc>
       </sitemap>
    </sitemapindex> 
    

    Användning av en flerspråkig XML-sitemap

    Om din webbplats har sidor på flera olika språk så kan du med fördel ha med denna informationen i din XML-sitemap. Se hur på denna artikel av Google.

    Video och bilder

    Det finns numera möjlighet att lägga in information gällande video och bilder i sin XML-sitemap. Detta ser jag inte som viktigt förutom i de fall där webbplatsen har sitt fokus på video eller bilder.

    För mer information kring detta se denna artikel för video och denna artikel för bilder.

    Erfarenhet som SEO-konsult

    Tyvärr så har jag i min roll som SEO-konsult sällan sett en korrekt XML-sitemap. I alla de åtgärdsrapporter som jag skrivit så är det nog bara en kund som haft en korrekt sitemap.

    Vanligtvis är det mycket grova fel:

    Tyvärr är det så att när något ofta är fel, även med till exempel rel canonical där många också gör fel - så kan Google inte lita på det och tar den informationen endast som en vägledning. Detta har lett till att XML-sitemaps inte hjälper så mycket som den skulle kunna göra för oss som använder det korrekt.


    Mer läsning / källor

    1. För en aktuell diskussion om detta se tråden XML-Sitemap påverkar rankning?? på SEO-forum.se

    Fråga / diskutera på SEO-forum.se

    I sektionen Övrigt inom SEO.

    17 aug 2017

    Denna artikel är skriven av
    Senast redigerad: 17 aug 2017
    Feedback uppskattas.