XML-Sitemaps
XML-Sitemaps sind strukturierte Dateien, die Suchmaschinen eine Übersicht über alle wichtigen Seiten einer Website geben. Sie fungieren als "Landkarte" für Crawler und helfen dabei, Content effizient zu entdecken und zu indexieren.
Hauptfunktionen von XML-Sitemaps:
XML-Sitemap Struktur
Eine grundlegende XML-Sitemap folgt diesem Schema:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2025-01-21</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
</urlset>
Wichtige XML-Sitemap Elemente:
Sitemap-Typen
1. Standard XML-Sitemaps
Die häufigste Form für reguläre Webseiten mit bis zu 50.000 URLs.
2. Image-Sitemaps
Spezielle Sitemaps für Bilder mit zusätzlichen Metadaten:
<image:image>
<image:loc>https://example.com/image.jpg</image:loc>
<image:caption>Beschreibung des Bildes</image:caption>
<image:title>Titel des Bildes</image:title>
</image:image>
3. Video-Sitemaps
Optimiert für Video-Content mit spezifischen Metadaten:
<video:video>
<video:thumbnail_loc>https://example.com/thumb.jpg</video:thumbnail_loc>
<video:title>Video-Titel</video:title>
<video:description>Video-Beschreibung</video:description>
<video:duration>120</video:duration>
</video:video>
4. News-Sitemaps
Für News-Content mit speziellen Anforderungen:
<news:news>
<news:publication>
<news:name>Website Name</news:name>
<news:language>de</news:language>
</news:publication>
<news:publication_date>2025-01-21</news:publication_date>
<news:title>Artikel-Titel</news:title>
</news:news>
Sitemap-Index für große Websites
Bei mehr als 50.000 URLs oder mehreren Sitemaps wird ein Sitemap-Index verwendet:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-pages.xml</loc>
<lastmod>2025-01-21</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-images.xml</loc>
<lastmod>2025-01-21</lastmod>
</sitemap>
</sitemapindex>
Best Practices für XML-Sitemaps
1. Technische Anforderungen
Dateigröße und Limits:
Dateiformat:
2. Content-Strategie
Was in Sitemaps gehört:
Was NICHT in Sitemaps gehört:
3. Priorisierung und Changefreq
Sitemap-Erstellung und -Verwaltung
1. Automatische Generierung
CMS-Integration:
Programmatische Erstellung:
2. Dynamische Sitemaps
Für Websites mit häufig wechselndem Content:
// Beispiel für dynamische Sitemap-Generierung
function generate_sitemap() {
$urls = get_all_public_urls();
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach($urls as $url) {
$sitemap .= '<url>';
$sitemap .= '<loc>' . $url['loc'] . '</loc>';
$sitemap .= '<lastmod>' . $url['lastmod'] . '</lastmod>';
$sitemap .= '<changefreq>' . $url['changefreq'] . '</changefreq>';
$sitemap .= '<priority>' . $url['priority'] . '</priority>';
$sitemap .= '</url>';
}
$sitemap .= '</urlset>';
return $sitemap;
}
Sitemap-Einreichung und -Monitoring
1. Google Search Console
Einreichung:
Wichtige Metriken:
2. Bing Webmaster Tools
3. Robots.txt Integration
Sitemap-Location in robots.txt angeben:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-index.xml
Häufige Sitemap-Fehler und Lösungen
1. Technische Fehler
2. Content-bezogene Probleme
Duplicate URLs:
Lösungsansätze:
Sitemap-Optimierung für SEO
1. Crawl-Budget-Optimierung
Effiziente Sitemap-Struktur:
2. Mobile-Sitemaps
Für mobile-optimierte Websites:
3. Internationale Sitemaps
Hreflang-Integration:
<url>
<loc>https://example.com/de/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/"/>
<xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/"/>
</url>
Monitoring und Wartung
1. Regelmäßige Überprüfungen
Wöchentliche Tasks:
Monatliche Reviews:
2. Automatisierung
Tools für Sitemap-Management:
Zukunft der XML-Sitemaps
1. JSON-LD Sitemaps
Experimentelle JSON-basierte Sitemaps:
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}