Dieser Artikel ist über 1 Jahr alt. Deshalb könnten die Informationen hier veraltet sein.

7. November 2012

Korrektes 404 Error-Handling mit CoolURI

Geschätzte Lesezeit: 2 Minuten

Bei der Verwendung von CoolURI kann man in der Datei CoolUriConf.xml, der zentralen Konfigurationsdatei der Extension, auch das Verhalten bei einem 404-Fehler, also dem Aufruf einer nicht vorhandenen Seite, einstellen.

Der Bereich sieht normalerweise so aus:

Über den Parameter behavior regelt man, was CoolURI im Falle eines 404-Fehler tun soll. Als Standard ist hier message eingestellt, dabei wird einfach ein beliebiger HTML-Code ausgegeben. Desweiteren wird über den Parameter status auch der korrekte Header-Code gesendet, damit z.B. auch Suchmaschinen erkennen, das die angeforderte URL nicht (mehr) vorhanden ist.

Neben message gibt es noch weitere Werte:

  • page: hier wird der Inhalt einer Seite eingebettet, das kann eine TYPO3-interne Seite sein, aber auch eine statische HTML-Datei
  • redirect: es wird auf eine andere URL umgeleitet, z.B. auf eine interne TYPO3-Seite nach dem Muster index.php?id=123
  • userfunc: hier wird das im Installtool eingestellte 404-Verhalten angewendet.

Die meisten, bis vor kurzem auch ich, verwenden redirect, um auf eine im Backend angelegte Fehlerseite umzuleiten.

Das Problem bei redirect und page ist allerdings, das hier kein korrekter 404-Header gesendet wird. Es wird ja auf eine vorhandene Seite umgeleitet, und die erzeugt natürlich einen Header vom Typ 200 (OK), und so erkennen die Suchmaschinen nicht, dass die eigentlich angeforderte Seite gar nicht vorhanden ist.

Vor kurzem habe ich jetzt einen Weg entdeckt, den korrekten 404-Header ausgeben zu lassen.

Dazu stelle ich zuerst in der CoolUriConf.xml das behavior userfunc ein, das sieht dann so aus:

Dann lege ich im Backend eine neue Seite an (nicht im Menü sichtbar) und nenne sie zum Beispiel einfach 404. Ich lasse mir die Seite dann einmal im Frontend anzeigen, damit die URL im CoolUri-Cache liegt, in meinem Beispiel wäre das dann domain.de/404/.

Im letzten Schritt gehe ich in das Install-Tool und gebe dort im Feld für das pageNotFound_handling die URL zur neuen 404-Seite an, in meinem Beispiel also einfach 404/

Das war es auch schon. Wenn man jetzt eine falsche URL aufruft, wird die Fehlerseite ausgeben, und z.B. mit den Entwicklertools im Chrome sieht man auch, das der korrekte Header gesendet wird.

Diese Variante funktioniert sogar in Multidomain-Setups, wenn man für jede Domain einfach eine Seite mit der URL 404/ anlegt. Je nach Domain wird dann die entsprechende Fehlerseite angezeigt, das habe ich in diesem Artikel hier schon mal beschrieben.

Ich weiss jetzt nicht, ob das der einzige, korrekte Weg ist, aber scheinbar funktioniert es wie es soll.

Wie sieht es aus, hat jemand von euch andere Erfahrungen oder bessere Lösungen?

Kommentare

Kommentare

Wolfgang Wagner

lebt in Friedrichshafen und arbeitet als Web Developer bei der TYPO3 Agentur jweiland.net in Filderstadt. Weitere Orte im Web: Twitter, Facebook, Videotraining zu TYPO3 8 LTS

Kommentare (5) Schreibe einen Kommentar

  1. Hallo Wolfgang,

    danke für die tollen Anleitungen. Leider klappt es bei mir nicht mit CoolURI und Typo3 6.1.1. Bei mir wird weiterhin der Text „Page not found“ angezeigt. Habe schon alles Caches gelöscht, Datenbank von CoolURI gelöscht, aber es hilft nichts. Auch das hier ist mir bekannt:
    http://www.roland-schinko.de/2010/typo3/cooluri-nach-update-page-not-found/

    Die Error-Seite an sich funktioniert, sowohl im Aufruf über das Backend als auch direkt den Link http://www.xyz.de/seite-nicht-gefunden

    Hast du noch eine Idee??

    Merci, Jürgen

    Antworten

  2. Es geht nun mit der tx_cooluri->pageNotFound!!!

    Peinlich, meine Änderungen an der CoolUriConf.xml waren wirkungslos, weil der FTP-User keine Berechtigung zum Speichern hatte….da war die Datei wohl innerhalb von Typo3 kopiert worden.

    Antworten

  3. Scheint leider ab 7.6 nicht mehr zu funktionieren … hatte auch einmal die folgende XML Configuration getestet:
    Bednarik\Cooluri\Integration\Cooluri->pageNotFound

    Ohne Erfolg.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.