SEO-Stolperfallen in TYPO3 – und wie Sie sie finden
Wo TYPO3 bei Sitemap, Weiterleitungen und Sprachen anders arbeitet, als man erwartet – mit einem Prüfschritt für jede Stelle.
Kurz: Mit der Systemextension EXT:seo bringt TYPO3 XML-Sitemap, hreflang-Angaben und Canonical-Tags von Haus aus mit. Die typischen Probleme entstehen an den Übergängen: eine Sitemap, die fertig ist, aber keine Adresse hat; eine eigene Sitemap-Bedingung, die die Voreinstellung verdrängt; Weiterleitungen, die TYPO3 nach einer Slug-Änderung als vorübergehend anlegt; und eine Sprachweiterleitung auf der Startseite, die Browser dauerhaft speichern. Jede dieser Stellen lässt sich in wenigen Minuten prüfen.
Die Sitemap hat keine Adresse
EXT:seo erzeugt die Sitemap von Anfang an – erreichbar ist sie aber zunächst nur über einen Parameter,
?type=1533906435. Die Adresse /sitemap.xml gibt es erst, wenn die Site-Konfiguration den Seitentyp
auf diesen Namen abbildet. In einem unserer Projekte lieferte /sitemap.xml deshalb eine 404, obwohl
die Sitemap die ganze Zeit fertig war. Für Ihre Entwickler, in der config.yaml der Site:
routeEnhancers:
PageTypeSuffix:
type: PageType
default: ''
index: ''
map:
sitemap.xml: 1533906435
Zwei Dinge gehören dazu:
- Jede Sprache hat ihre eigene Sitemap, unter ihrer Basis-URL:
/de/sitemap.xml,/en/sitemap.xml. Steht jede Sprache unter einem Präfix, gibt es unter/sitemap.xmlkeine. Reichen Sie dann jede Sprach-Sitemap einzeln in der Search Console ein. - Die Unter-Sitemaps tragen einen cHash, etwa
/de/sitemap.xml?sitemap=pages&cHash=…. Wer gleichbleibende Adressen braucht, zum Beispiel für den Cache-Warmup nach dem Deploy, bildet auch den Parametersitemapim Routing ab (Enhancer vom TypSimplemit einemStaticValueMapper, siehe TYPO3-Dokumentation).
Prüfen: https://www.ihre-domain.de/de/sitemap.xml im Browser öffnen – es muss XML kommen, keine
404-Seite.
Eine eigene Sitemap-Bedingung verdrängt die Voreinstellung
Welche Seiten in die Sitemap kommen, regelt unter anderem die Einstellung additionalWhere. Ihre
Voreinstellung lautet:
{#no_index} = 0 AND {#canonical_link} = ''
Seiten mit „noindex“ und Seiten, deren Canonical auf eine andere Seite zeigt, bleiben damit draußen.
Wer additionalWhere setzt, um etwas anderes auszuschließen, ersetzt diese Bedingung vollständig.
Dann stehen Seiten in der Sitemap, die Google gar nicht aufnehmen soll, und in der Search Console
tauchen eingereichte URLs auf, die wegen „noindex“ ausgeschlossen sind. Eine eigene Bedingung deshalb
immer an die Voreinstellung anhängen:
{#no_index} = 0 AND {#canonical_link} = '' AND …
Einzelne Seitenbäume schließen Sie einfacher mit excludePagesRecursive aus, dann bleibt
additionalWhere unberührt.
Prüfen: Stichproben aus der Sitemap im Quelltext auf noindex untersuchen – oder in der Search
Console unter „Seiten“ nach eingereichten URLs filtern, die ausgeschlossen sind.
Automatische Weiterleitungen sind nur vorübergehend
Ändert ein Redakteur den URL-Pfad einer Seite (Slug), legt TYPO3 automatisch eine Weiterleitung von
der alten Adresse an. Das ist gut – nur verwendet TYPO3 dafür per Voreinstellung den Status 307,
eine vorübergehende Weiterleitung. Google wertet vorübergehende Weiterleitungen nur als schwaches
Signal dafür, dass die neue Adresse die richtige ist; die alte URL kann länger im Index bleiben.
Für eine dauerhaft umgezogene Seite ist 301 der passende Status. Einstellen lässt er sich je Site, in
der settings.yaml:
redirects:
httpStatusCode: 301
Zwei weitere Einstellungen im Umfeld:
- Nutzung zählen. Mit dem Feature-Schalter
redirects.hitCountzeigt das Modul „Redirects“, wie oft eine Weiterleitung aufgerufen wurde und wann zuletzt. Erst dann lässt sich entscheiden, welche alten Weiterleitungen weg können, auf Wunsch automatisch mitvendor/bin/typo3 redirects:cleanup. - Widersprüche finden.
vendor/bin/typo3 redirects:checkintegritymeldet Weiterleitungen, deren Quelladresse inzwischen wieder eine echte Seite ist – die Weiterleitung würde die Seite verdecken.
Prüfen: Auf der Staging-Umgebung den Slug einer Testseite ändern und im Modul „Redirects“ den Status der neuen Weiterleitung ansehen.
Sprachweiterleitung auf der Startseite: 302, nicht 301
Leitet die Startseite / Besucher je nach Browsersprache auf /de/ oder /en/ weiter, gehört dafür
ein 302 her, kein 301 – egal, ob die Regel im Webserver oder in einer Extension steckt:
- Einen 301 speichern Browser dauerhaft. Wer einmal auf
/en/gelandet ist, kommt nie wieder bei/an, auch nicht nach einem Wechsel der Browsersprache. Ein gemeinsamer Cache kann die Sprache eines Besuchers sogar an alle weitergeben. - Suchmaschinen verstehen einen 301 als „diese Adresse gibt es nicht mehr“ und ordnen die Startseite
einer einzigen Sprache zu. Google nennt für solche Startseiten ausdrücklich die serverseitige
302-Weiterleitung und empfiehlt dazu die Angabe
hreflang="x-default". - Die Antwort sollte
Vary: Accept-Languagetragen, damit auch Zwischenspeicher wissen, dass sie von der Sprache abhängt.
Die Weiterleitung auf den richtigen Hostnamen, etwa von der Adresse ohne auf die mit www, bleibt ein
301: Sie hängt nicht davon ab, wer fragt.
Prüfen: curl -I https://www.ihre-domain.de/ zeigt Status und Header der Weiterleitung.
Der Website-Titel hängt an jedem Seitentitel
TYPO3 hängt den Website-Titel aus der Site-Konfiguration (websiteTitle) an den <title> jeder Seite
an. Auffällig wird das oft erst nach dem Upgrade auf TYPO3 13: Der alte Weg, den Titel per TypoScript
über TSFE:tmpl auszulesen, funktioniert dort nicht mehr, also zieht er nach websiteTitle um – und
steht danach in jedem Seitentitel. Ist das nicht gewollt, schaltet config.showWebsiteTitle = 0 im
TypoScript es ab. Mehr zum Umzug des Titels auf der Seite
Upgrade von TYPO3 12 auf 13.
Prüfen: Den Quelltext einer Unterseite öffnen und den <title> lesen.
Alles auf einen Blick
| Stelle | Prüfen | Richtig ist |
|---|---|---|
| Sitemap | /de/sitemap.xml im Browser | XML, keine 404 – je Sprache eine |
| Sitemap-Inhalt | Stichproben, Search Console | keine Seiten mit noindex oder fremdem Canonical |
| Weiterleitung nach Slug-Änderung | Modul „Redirects“ auf Staging | Status 301 |
Sprachweiterleitung auf / | curl -I | 302 mit Vary: Accept-Language |
| Hostname | curl -I auf die Adresse ohne www | 301 |
| Seitentitel | Quelltext einer Unterseite | Titel wie gewollt, mit oder ohne Website-Titel |
Besonders viele dieser Stellen ändern sich bei einem Relaunch, wenn sich Adressen verschieben. Dann gehören Weiterleitungen und Sitemap zur Abnahme – mehr dazu auf unserer Seite zum TYPO3 Relaunch. Oder schreiben Sie uns über das Formular unten.
Stand: 24.9.2026 · Quellen: TYPO3 Explained: XML-Sitemap, EXT:redirects, TYPO3 Changelog: showWebsiteTitle, Google: Weiterleitungen und die Google-Suche, Google: Startseiten für internationale Nutzer
Erstgespräch vereinbaren
Gerne beraten wir Sie in einem kostenlosen Erstgespräch.
Was passiert nach dem Absenden?
- Wir melden uns in der Regel innerhalb eines Werktages.
- Wir klären kurz Ihr Anliegen und schlagen die nächsten Schritte vor.
- Auf Wunsch vereinbaren wir ein kostenloses Erstgespräch (ca. 60 Min.).
Danke!
Wir haben Ihre Nachricht erhalten und melden uns umgehend.