XML Sitemap mit TYPO3 9.5 erstellen

Seit TYPO3 9.4 bietet der TYPO3 Core einige SEO Features. In diesem Artikel möchten wir die automatische Generierung von XML-Sitemaps etwas beleuchten.

Die technische Spezifikation dazu finden Sie auf der offiziellen TYPO3-Dokumentation.

Warum braucht man eine Sitemap?

Eine Sitemap hilft Suchmaschinen (z.B. Google) dabei die Website besser zu verstehen und gibt dabei eine Übersicht über die relevanten Seiten der Website.
So kann es sein, dass Suchmaschinen Unterseiten finden, die andernfalls übersehen worden wären. Dies kann der Fall sein, wenn eine Seite gerade erst neu erstellt wurde oder nur wenige / keine Verlinkungen zu der Seite existieren.

Auch wenn eine Sitemap die Suchmaschinen unterstützt, gibt es keine Garantie, dass die Seiten auch wirklich indexiert werden. Je nach Suchmaschine und deren Algorithmus kann es sein, dass auch Seiten aus einer Sitemap nicht in den Index aufgenommen werden. Das könnte u.U. daran liegen, dass die Seite sehr mager ist und kaum Text enthält. Auch an dieser Stelle bleibt die Suchmaschinenoptimierung wichtig.

<!-- Beispieleintrag Startseite WACON.de -->
<url>
  <loc>https://www.wacon.de/</loc> <!-- URL der Seite -->
  <lastmod>2019-02-18</lastmod> <!-- Zuletzt modifiziert am //Optional -->
  <changefreq>daily</changefreq> <!-- Häufigkeit, mit der sich die Seite vermutlich ändern wird. //Optional -->
  <priority>1.0</priority> <!-- Priorisierung //Optional -->
</url>

Vorbereitung für die Sitemap

Um die automatische Generierung von Sitemaps in TYPO3 9.5 einzustellen, werden vorher noch folgende Punkte benötigt:

Die Sitemap im Typoscript Setup einrichten

Im TypoScript Setup müssen folgende Zeilen hinzugefügt werden:

plugin.tx_seo {
    config {
        xmlSitemap {
            sitemaps {
                pages { 
                    config {
                        #excludedDoktypes = 9818, 500
                        additionalWhere = AND no_index = 0
                    }
                }
            }
        }
    }
}

Der Punkt "excludeDoktypes" wird nur benötigt, wenn Sie die Seiten noch in anderen Formaten ausliefern, von denen Sie keine Sitemap benötigen.
Zum Beispiel wird keine Sitemap von Drucktemplates, RSS-Feeds etc. benötigt.

Mit "additionalWhere" wird zusätzlich zur Abfrage für die Sitemap noch die Beschränkung aufgelegt, dass die Seite auch indexierbar sein muss.
Bsp. Eine 404-Fehlerseite sollte nicht indexiert werden.

Nachdem die Sitemapkonfiguration eingetragen wurde und die o.G. Punkte erledingt sind, können Sie die Sitemap unter https://yourdomain.com/?type=1533906435 erreichen.
Wenn Sie verschiedene Domains in Ihrem TYPO3-Backend pflegen, müssen Sie nur die o.G. Punkte bei den anderen Rootseiten der Domains wiederholen und sie erreichen die Sitemaps jeweils unter https://yourdomain.com/?type=1533906435.

Sitemap für News erstellen

Wenn Sie auch eine Sitemap für Ihre Newsbeiträge erstellen wollen, können Sie diese ganz einfach mit folgendem Code erstellen:

plugin.tx_seo {
    config {
        xmlSitemap {
            sitemaps {
                news {
                    provider = TYPO3\CMS\Seo\XmlSitemap\RecordsXmlSitemapDataProvider
                    config {
                        table = tx_news_domain_model_news
                        sortField = sorting
                        lastModifiedField = tstamp
                        recursive = 1
                        pid = 9 //Speicherort der Beiträge
                        url {
                            pageId = 6 //PageID der Detailseite
                            fieldToParameterMap {
                                uid = tx_news_pi1[news]
                            }
                            additionalGetParameters {
                                tx_news_pi1.controller = News
                                tx_news_pi1.action = detail
                            }
                            useCacheHash = 1
                        }
                    }
                }
            }
        }
    }
}

Die Sitemap der Sitemaps

Wenn Sie nun den Link https://yourdomain.com/?type=1533906435 mit Ihrer Domain aufrufen, können Sie eine Übersicht der vorhandenen Sitemaps sehen.

In unserem Beispiel werden die beiden URLs generiert:

www.wacon.de/sitemap.xml
www.wacon.de/sitemap.xml

Die erste Sitemap für die Seiten und die Zweite für unsere Newsbeiträge.

Wenn Sie nun auf eine der beiden Sitemaps klicken, kommen Sie zur Sitemap selbst.

Ext SEO und routeEnhancers

Damit die URLs wie bei uns mit /sitemap.xml erreichbar sind und nicht über den Pagetype=1533906435, muss noch mindestens der folgende Code in der Siteconfig Ihrer Seite eingetragen werden:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    map:
      sitemap.xml: 1533906435

Wir verwenden die Folgende Konfiguration:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: .html
    index: index
    map:
      .html: 0
      .ajax: 500
      rss.feed: 9818
      sitemap.xml: 1533906435

So ergibt sich auch, weshalb wir die Pagetypes 500 und 9818 aus der generierung der Sitemaps entfernt haben.

Sitemap in robots.txt

Um den Suchmaschinen noch Mitzuteilen, wo die Sitemap(s) zu finden sind, empfiehlt es sich diese in der robots.txt zu erwähnen.

Dies können Sie ganz einfach über das TYPO3 Backend mit einem Static Route bewerkstelligen.
Beispiel:

User-agent: *
Disallow: /typo3/
Disallow: /typo3_src/
Disallow: /template/
Allow: /typo3/sysext/frontend/Resources/Public/*
Allow: /template/Resources/Public/*
Sitemap: www.wacon.de/sitemap.xml
Sitemap: www.wacon.de/sitemap.xml