Die Contao Sitemap - In Contao 4 und 5 die sitemap.xml anpassen

'Mathias Arzberger'
Mathias Arzberger
Die Contao Sitemap
Die Contao Sitemap

So verbesserst du die sitemap.xml Erstellung in Contao 4.13, 5.3 und 5.4.

Contao erstellt die sitemap.xml automatisch

In Contao 4.x und 5.x wird die Sitemap automatisch erstellt, sobald du Seiten in der Seitenstruktur veröffentlichst und die Option "In die Sitemap aufnehmen" aktivierst.

Die Sitemap wird standardmäßig unter https://deinedomain.de/sitemap.xml generiert.

Was ist aber wenn du weitere Anforderungen an die erstellte Contao Sitemap hast? Ich gehe hier auf mögliche Anpassungen der sitemap.xml ein.

Inhaltsverzeichnis

Statische Seiten oder Detailseiten von eigenen Modulen hinzufügen

In Contao 4 und Contao 5 kannst du ganz einfach weitere Seiten zur Sitemap hinzufügen. Nutze dafür das contao.sitemap Event oder den als veraltet markierten getSearchablePages Hook (in Contao 5 nicht mehr möglich).

 

contao.sitemap Event

// src/EventListener/SitemapListener.php
namespace App\EventListener;

use App\Model\KeywordModel;
use Contao\CoreBundle\Event\ContaoCoreEvents;
use Contao\CoreBundle\Event\SitemapEvent;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;

#[AsEventListener(ContaoCoreEvents::SITEMAP)]
class SitemapListener
{
    public function __invoke(SitemapEvent $event): void
    {
    	$keywords = KeywordModel::findAll();
		
		if (null === $keywords) {
            return $pages;
        }
        
        $sitemap = $event->getDocument();
        $urlSet = $sitemap->childNodes[0];

        $loc = $sitemap->createElement('loc');
        
        # Add urls for keywords
        foreach($keywords as $item) {
        	$loc->appendChild($sitemap->createTextNode('https://deinedomain.de/keyword/'.$item->alias));
        }
    
		// Add some satic urls
		$loc->appendChild($sitemap->createTextNode('https://deinedomain.de/pdf/meine-schoene-anleitung-fuer-urls.pdf'));
		$loc->appendChild($sitemap->createTextNode('https://deinedomain.de/pdf/agb.pdf'));
		$loc->appendChild($sitemap->createTextNode('https://deinedomain.de/static/konfigurator-de.html'));
		$loc->appendChild($sitemap->createTextNode('https://deinedomain.de/static/konfigurator-en.html'));

        $urlEl = $sitemap->createElement('url');
        $urlEl->appendCild($loc);
        $urlSet->appendChild($urlEl);
    }
}

getSearchablePages Hook

Hinweis: Die Verwendung des getSearchablePages-Hooks ist seit Contao 4.11 veraltet und wird in Contao 5.0 nicht mehr funktionieren.

// src/EventListener/GetSearchablePagesListener.php
namespace App\EventListener;

use App\Model\KeywordModel;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;

#[AsHook('getSearchablePages')]
class GetSearchablePagesListener
{
    public function __invoke(array $pages, $rootId = 0, bool $isSitemap = false, string $language = null): array
    {
		$keywords = KeywordModel::findAll();
		
		if (null === $keywords) {
            return $pages;
        }
        
        # Add urls for keywords
        foreach($keywords as $item) {
            $pages[] = 'https://deinedomain.de/keyword/'.$item->alias;
        }
        
        // Add some satic urls
         $pages[] = 'https://deinedomain.de/pdf/meine-schoene-anleitung-fuer-urls.pdf';
         $pages[] = 'https://deinedomain.de/pdf/agb.pdf';
         $pages[] = 'https://deinedomain.de/static/konfigurator-de.html';
         $pages[] = 'https://deinedomain.de/static/konfigurator-en.html';
		
        return $pages;
    }
}

Erstellen einer Sitemap-Index-Datei für Contao

Eine Sitemap-Index-Datei wird dann notwendig, wenn die Anzahl der URLs in der Sitemap sehr groß wird. Sie dient dazu, mehrere Sitemap-Dateien zu verwalten und den Suchmaschinen die Organisation und Strukturierung großer Websites zu erleichtern. Google selbst gibt an das eine sitemap.xml nicht mehr als 50.000 URLs enthalten oder maximal 50 MB (unkomprimiert) Groß sein soll. Das XML-Format einer Sitemap-Indexdatei ist dem XML-Format einer Sitemap-Datei sehr ähnlich und wird durch das Sitemap-Protokoll definiert. Das bedeutet, dass alle Sitemap-Anforderungen auch auf Sitemap-Indexdateien zutreffen.

In der Google Search Console wird bei zu großen Sitemap Dateien folgender Fehler angezeigt:

! Sitemap kann gelesen werden, enthält aber Fehler

Zu viele URLs

Deine Sitemap umfasst zu viele URLs. Bitte erstelle mehrere Sitemaps, die jeweils bis zu 50.000 URLs enthalten können, und reiche diese anschließend ein.

Lösung für die Erstellung einer Sitemap-Index-Datei in Contao

Da Contao von Haus aus die Generierung von mehreren Sitemap-Dateien für eine Root-Seite nicht unterstützt, kannst du das Contao SEO Plugin installieren um diese Funktion nach zurüsten.

Installation über den Contao Manager

  1. Suche nach Contao SEO Plugin und installiere die Erweiterung.

Installation über Composer

  1. composer require pdir/contao-seo-plugin

Weitere Schritte

  1. Annahme: Die Erweiterung wurde über eine der oberen Varianten installiert
  2. Gehe im Contao Backend zu Inhalte -> Seiten und wähle den gewünschten Startpunkt deiner Webseite
  3. Aktiviere in den SEO-Einstellungen -> Sitemap aktivieren und vergib den gewünschten Sitemap-Namen, zub Beispiel "full-".
  4. Optional: Aktiviere Sitemap zur robots.txt hinzufügen falls du die zu erstellende Sitemap-Dateien zur robots.txt hinzufügen möchtest.
  5. Gehe im Contao Backend zu System -> Systemwartung, aktiviere die Checkbox SEO Plugin Sitemap neu schreiben und klicke auf Daten bereinigen

Fertig!

Weitere Vorteile des Contao SEO Plugins

  • Du kannst für jede Seite die Priorität (z.B. 0.5) und die Änderungsfrequenz (täglich, wöchentlich etc.) angeben, dies hilft Suchmaschinen, die Relevanz und die Häufigkeit von Updates besser zu verstehen.
  • Du kannst die normale sitemap.xml bzw. deren Route aus der robots.txt entfernen und deine Sitemap nur für deine gewünschten Suchmaschinen bereitstellen. Einige Kunden wünschten sich dieses Feature, damit Mitbewerber die Änderungen in der sitemap.xml nicht "überwachen" können.
  • Manuelle Steuerung, wann neue Sitemap-Dateien erstellt werden: In einigen Fällen kann die Sitemap-Generierung die Scriptlaufzeit des Servers bzw. des Webhosting-Paketes überschreiten. Eine statisch abgelegte Sitemap kann per Konsole oder im Contao Backend erstellt werden. Auch Google kann bei zu langen Ladezeiten keine sitemap.xml auslesen und wird die Sitemap die zu lange für die Generierung benötigt nicht verarbeiten.

Wie erstellt Contao seine sitemap.xml?

1. Aktivierung der Sitemap-Erstellung:

  • In Contao 4.x und 5.x wird die Sitemap automatisch erstellt, sobald du Seiten in der Seitenstruktur veröffentlichst und die Option "In die Sitemap aufnehmen" aktivierst.
  • Die Sitemap wird standardmäßig unter https://deinedomain.de/sitemap.xml generiert.

2. Einstellungen zur Sitemap in Contao:

  1. Seitenstruktur verwalten:

    • Gehe im Backend zu Layout → Seitenstruktur.
    • Wähle eine Seite aus und klicke auf "Bearbeiten".
    • Unter Sitemap-Einstellungen findest du die Option „In die Sitemap aufnehmen“. Aktiviere diese Option für alle Seiten, die in der Sitemap erscheinen sollen.
  2. Priorität und Änderungsfrequenz:

    • Kann in Contao mit Bordmitteln nicht angegeben werden.

3. Erstellen und Aktualisieren der Sitemap:

  • Contao generiert die Sitemap jedes Mal neu, wenn du Änderungen an der Seitenstruktur vornimmst.
  • Über den Contao-Manager oder das Terminal kannst du die Sitemap manuell erneuern mit:
    vendor/bin/contao-console contao:sitemap:generate

4. Mehrsprachige Sitemaps:

  • Falls deine Website mehrsprachig ist, erstellt Contao automatisch mehrere Sitemaps, z.B.:
    • https://deinedomain.de/de/sitemap.xml
    • https://deinedomain.de/en/sitemap.xml
  • Die Sitemap wird nach Sprach-Root-Seiten aufgeteilt.

5. Caching und Auslieferung:

  • Die Sitemap wird nicht im Cache gespeichert, kann direkt von Suchmaschinen abgerufen werden und wird beim Aufruf generiert (Dies kann bei vielen URLs zu Problemen führen).
  • Die Sitemap wird automatisch aktualisiert, wenn du Inhalte änderst oder neue Seiten hinzufügst.

6. Sitemap manuell einreichen (Google Search Console):

  • Contao fügt die erstelle Sitemap automatisch der robots.txt hinzu.
  • Du kannst die erstellte sitemap.xml aber auch in der Google Search Console oder anderen Suchmaschinen-Tools einreichen, um die Indexierung zu beschleunigen.

Was ist eine Sitemap-Index-Datei?

Eine Sitemap-Index-Datei wird dann notwendig, wenn die Anzahl der URLs in der Sitemap sehr groß wird. Sie dient dazu, mehrere Sitemap-Dateien zu verwalten und den Suchmaschinen die Organisation und Strukturierung großer Websites zu erleichtern.

Warum ist sie wichtig?

  1. Begrenzung der Sitemap-Größe:

    • Eine einzelne Sitemap darf laut Google maximal 50.000 URLs oder eine Dateigröße von 50 MB (unkomprimiert) haben.
    • Für Websites mit mehr URLs ist eine Aufteilung in mehrere Sitemaps erforderlich.
  2. Übersicht und Verwaltung:

    • Statt viele einzelne Sitemaps einzureichen, listet die Sitemap-Index-Datei alle Sitemaps auf und gibt Suchmaschinen einen zentralen Einstiegspunkt.
    • Die Suchmaschine kann dann jede aufgeführte Sitemap separat abrufen und verarbeiten.
  3. Effiziente Indexierung großer Websites:

    • Besonders für große E-Commerce-Websites, Nachrichtenseiten oder Portale mit dynamischen Inhalten (z. B. Blogs mit vielen Beiträgen) wird die Struktur dadurch übersichtlicher.
    • Die Index-Datei hilft, die Crawling-Effizienz zu verbessern und sicherzustellen, dass keine URLs übersehen werden.
  4. Organisatorische Trennung:

    • URLs können thematisch oder nach Kategorien auf verschiedene Sitemaps verteilt werden (z. B. sitemap-products.xml, sitemap-blogs.xml).
    • Das erleichtert die Verwaltung und Aktualisierung.

Wie sieht eine Sitemap-Index-Datei aus?

Eine Sitemap-Index-Datei wird im XML-Format erstellt und verweist auf andere Sitemap-Dateien:

Mit dem neuen Kursbuchungssystem hat die pdir GmbH eine Lösung geschaffen, die modernste Technologie mit den praktischen Anforderungen des Weiterbildungsmanagements verbindet. Besonders für Plattformen wie mein-praxis-manager.de, die sich auf hochspezialisierte Schulungen und Beratungen konzentrieren, bietet dieses Tool einen erheblichen Wettbewerbsvorteil.

Dank der durchgängigen Automatisierung und der intuitiven Bedienung ist das System nicht nur eine Erleichterung für Administratoren, sondern auch ein Gewinn für alle Teilnehmer.

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>https://www.beispielseite.de/full-sitemap.xml</loc>
      <lastmod>2024-12-01</lastmod>
   </sitemap>
   <sitemap>
      <loc>https://www.beispielseite.de/full-sitemap-1.xml</loc>
      <lastmod>2024-12-15</lastmod>
   </sitemap>
   <sitemap>
      <loc>https://www.beispielseite.de/full-sitemap-2.xml</loc>
      <lastmod>2024-12-10</lastmod>
   </sitemap>
</sitemapindex>

Vorteile der Sitemap-Index-Datei:

  • Skalierbarkeit: Unbegrenzte Anzahl von URLs durch mehrere Sitemaps.
  • Performance: Suchmaschinen können Sitemaps parallel verarbeiten.
  • Flexibilität: Unterschiedliche Frequenzen und Prioritäten für verschiedene Sitemap-Dateien.
  • Automatisierung: Bei CMS wie Contao, WordPress oder Magento wird die Sitemap-Index-Datei oft automatisch erstellt und aktualisiert.

Wann brauchst du die Sitemap-Index konkret?

  • Wenn deine Website mehr als 50.000 Seiten oder URLs hat.
  • Wenn du deine Sitemaps thematisch strukturieren möchtest.
  • Wenn deine Sitemap-Datei regelmäßig groß wird und du die Crawling-Effizienz maximieren willst.
pdir Tipp: Website Check

Du hast Fragen zum Thema? Kontaktiere uns, gern auch per E-Mail oder telefonisch unter 03521 / 4767592.

Zurück

*******************

Liebe Leser,
Menschen sind nicht ausschließlich Frauen, Männer, weiblich, männlich, divers – Menschen können vielfältiger sein! Wir möchten euch ALLE als Menschen ansprechen, egal von welchem Geschlecht oder welcher Kultur. Sprachlich ist es schwierig, euch alle „richtig“ anzusprechen. Daher verwenden wir – auch für eine bessere Lesbarkeit – bei Personenbezeichnungen meist die männliche Form, wie Dienstleister oder Partner. Aber eins ist uns wichtig: Keiner soll sich ausgeschlossen fühlen.

Zudem sind wir Verfechter des DU #gernperdu und gestalten so unsere tägliche Kommunikation etwas lockerer und persönlicher. Auch hier gilt: Wir bringen allen die gleiche Wertschätzung entgegen.

*******************