TYPO3 - 404 Page not found
Links[Bearbeiten]
https://www.tutnixgut.de/404-fehler-bei-aufruf-einer-typo3-seite-mit-url-parameter-fbclid-realurl/
Fehlerseite ab TYPO3 6.2[Bearbeiten]
https://dbje.de/typo3-hannover-wissen/fehlerseiten-fuer-typo3-korrekt-einrichten.html
Typo3- Fehlerseite Nun muss Typo3 (hier ab Version 6.2) noch mitgeteilt werden, wo diese Seite liegt, beziehungsweise welche ID diese hat.
Hier gibt es zwei Wege:
1. Eintrag ins LocalConfiguration.php
'FE' => [ 'pageNotFound_handling' => 'REDIRECT:http://dbje.de', 'pageNotFound_handling_statheader' =>'HTTP/1.0 404 Not Found'; ],
oder
2. Über das Installtool von Typo3
Einloggen über das Installtool
Unter "All configuration" im Feld Frontend (FE) den Eintrag
[FE][pageNotFound_handling] =
suchen. Dort wird die URL angegeben.
TYPO3 Fehlerseite in der Konfiguration einrichten[Bearbeiten]
https://docs.typo3.org/typo3cms/extensions/mktools/Utilities/PageNotFoundHandling/Index.html
Localconf (oder über Install Tool)
'FE' => [
'debug' => '0',
'pageNotFound_handling' => '/error-404.html',
'pageNotFound_handling_statheader' => 'HTTP/1.0 404 Not Found',
],
Fehlersuche[Bearbeiten]
Das kann evtl. helfen[Bearbeiten]
$TYPO3_CONF_VARS['SYS']['curlUse'] = ’1′;
- Muss leer sein
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']['init']['postVarSet_failureMode'] = ”;
Error 404 Page not found mit coolUri[Bearbeiten]
http://wwagner.net/typo3/korrektes-404-error-handling-mit-cooluri/ Ü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:
404 CoolUriConf.xml
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/.
CoolUri 404 Seite anlegen
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/
CoolUri PageNotFound_handling
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?
404 Fehler durch unbekannte Link-Parameter[Bearbeiten]
Hinweis: Teilweise reicht es die Option pageNotFoundOnCHashError auf false zu setzen
Man kann RealUrl wohl dazu überreden den Parameter zu ignorieren:
Zusätzlich wird noch in der Datei: ext_localconf.php dies hinzugefügt oder wie weiter unten beschrieben, kannst du die Parameter auch manuell in die LocalConfiguration.php eintragen:
// Exclude fbclid from cHash
if (!in_array('fbclid', $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'])) {
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'fbclid';
if (!isset($GLOBALS['TYPO3_CONF_VARS']['FE']['cHashExcludedParameters'])) {$GLOBALS['TYPO3_CONF_VARS']['FE']['cHashExcludedParameters'] = ''; }
$GLOBALS['TYPO3_CONF_VARS']['FE']['cHashExcludedParameters'] .= ', fbclid'; }
Weitere Einstellungen die du beachten solltest wären diese Einstellungen in der LocalConfiguration.php im typo3conf Ordner.
pageNotFoundOnCHashError auf false setzen
[FE][pageNotFoundOnCHashError] = false
GET Parameter unter CHashExcludeParameters registrieren:
[FE][cHashExcludedParameters] = L, pk_campaign, pk_kwd, utm_source, utm_medium, utm_campaign, utm_term, utm_content, fbclid
Zuletzt noch den Backend Cache leeren und danach sollte es wie gewünscht