Problematischen Redirect-HTTP-Code im TYPO3 Core korrigieren

Wir hatten vor einiger Zeit das Problem, daß Benutzer einer TYPO3 basierten Website auch nach erfolgreicher Anmeldung am Frontend im Folgenden einzelne Seiten nicht aufrufen konnten. Zunächst war keine Systematik zu erkennen, außer der, daß anscheinend nur der Internet Explorer betroffen war.
Eine Auswertung der Webserver-Logs hat gezeigt, daß in diesen Fällen kein Aufruf der Seiten von Seiten des Clients an den Webserver registriert wurde. Das führte auf die letzlich richtige Spur, nämlich das Zusammenspiel von Caching und einem für diesen Fall falschen HTTP-Status-Code.

Unsere Seitenstruktur sieht beispielhaft folgendermaßen aus:

|- Startseite (Weiterleitung zu erster erreichbarer Unterseite)
  |- Seite 1 (zugriffsgeschützt für Gruppe 1)
  |- Seite 2 (zugriffsgeschützt für Gruppe 2)
  |- Anmeldeseite (öffentlich)
  |- gemeinsame Seite (zugriffsgeschützt für Gruppen 1 und 2)

Ein Zugriff auf die gemeinsame Seite führt zunächst wie gewünscht zu einer Weiterleitung auf die Anmeldeseite. TYPO3 gibt an dieser Stelle den HTTP-Status „301 Moved Permanently“ zurück. Das führt dazu, daß der Browser bei weiteren Aufrufen der gemeinsamen Seite direkt das zwischengespeicherte Ziel, nämlich die Login-Seite anzeigt. Erst ein Löschen des Browser-Caches löste das Problem für den Benutzer.

Ich habe als vorübergehende Lösung den HTTP-Status-Code im TYPO3 Core angepasst:

typo3/sysext/cms/tslib/class.tslib_fe.php (Zeile 2788)

vorher

$redirectStatus = t3lib_utility_Http::HTTP_STATUS_301;

nachher

$redirectStatus = t3lib_utility_Http::HTTP_STATUS_302;

 

Diese Beschreibung bezieht sich auf TYPO3 Version 4.7.19. Weitere Informationen dazu gibt es im TYPO3 Issue Tracker.

Update: Der Fehler ist inzwischen in TYPO3 6.2 behoben. Für ältere Versionen ist kein Fix vorgesehen.

Kommentieren Sie den Beitrag

Bitte geben Sie Ihren Namen und Ihre Email-Adresse an. Der Name wird auf der Website veröffentlicht, die Email-Adresse nicht. Wir verwenden diese intern, um Spam zu identifizieren.

Captcha wird geladen...