Fehlerseite

Verschiedene Möglichkeiten mit 404 Fehlern umzugehen.

Erstellt: 10/2015| Geändert: 03/2023

Standard Fehlerseite

Für die Standard Konfiguration im Install tool -> All Configuration die URL der Fehlerseite eintragen für [pageNotFound_handling].

Mehrsprachige Fehlerseiten mit Real URL

Wenn RealUrl und Mehrsprachigkeit verwendet werden soll, muss  typo3conf/localconf.php editiert werden und die Sektion [pageNotFound_handling] mit folgenden Code ersetzt werden:

if (substr($_SERVER['REQUEST_URI'], 0, 4) == '/en/') {
  $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] =
  '/en/system-pages/notfound.html';
} else {
  $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] =
  '/de/system-pages/notfound.html';
}

Workaroud für einen Bug: Anzeige einer leeren Fehlerseite

Ich hatte einen Bug den ich nie identifizieren konnte: wenn ich eine URL eingetragen habe in pageNotFound_handling hat dies nicht funktioniert sondern es wurde nur eine leere Seite angzeigt.

Der einzige Ausweg war folgendes in [pageNotFound_handling] einzutragen:

USER_FUNCTION:typo3conf/pageNotFoundHandling.php:user_pageNotFound->pageNotFound

Die Function typo3conf/pageNotFoundHandling.php hat folgenden Code:

<?
class user_pageNotFound {
        function pageNotFound ($param,$ref) {
                $url = '/fehler.html';
                header('location:'.$url);
                exit();
        }
}
?>

In TYPO3 4.1.* tritt der Fehler nicht mehr auf.

Erstellt: 07/2010| Geändert: 03/2023

Dynamische Fehlerseite

Zur Anzeige einer dynamischen Fehlerseite wird die bereits oben beschriebene User Funktion verwendet mit folgenden Eintrag:

USER_FUNCTION:fileadmin/scripts/pageNotFoundHandling.php:
  user_pageNotFound->pageNotFound

Das Script holt jedoch den Dateinamen aus der URL und übergibt diesen als Parameter an die Fehlerseite. Diese enthält ein Suchfeld der Indexed Search was dazu führt dass eine Suche nach dem Dateinamen durchgeführt wird und die Ergebnisse angezeigt werden.

<?php

/**
 * Creates a error page redirect
*/

class user_pageNotFound {
  function pageNotFound($param,$ref) {

    $searchexp = ($param[currentUrl]);
    $searchexp = basename($searchexp,".html");
    $searchexp = strip_tags($searchexp);
    $url = "/system-pages/notfound.html?tx_indexedsearch[sword]="
            .$searchexp;
    header('location:'.$url);
    exit();
  }
}
?>

Nachtrag / Verbesserung

Google hat sich beschwert (Webmaster Tools) dass die Fehlerseite den Code 200 Zurückgibt statt 400. Nun den eine neue Variante des Scriptes mit Javascript Redirect.

Ausserdem auch noch im der Website angepasstem Design (mit Stylesheet)

<?php

define('REDIRECTPAGE', 'system-pages/notfound.html');
define('BASEPATH', '/');
define('STYLESHEET', 'fileadmin/css/knolledge.css');

/**
 * Creates a error page redirect
*/

class user_pageNotFound {

 function pageNotFound($param, $conf) {

    // Search Expression
    $searchexp = ($param[currentUrl]);
        $searchexp = basename($searchexp,".html");
        $searchexp = strip_tags($searchexp);
        $urlparameters = "?tx_indexedsearch[sword]=" . $searchexp;
   
    // Redirect
    $server_name = $_SERVER['SERVER_NAME'];
    header("HTTP/1.0 404 Not Found");
    print '
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <meta http-equiv="content_box-Type" content_box="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="' . BASEPATH . STYLESHEET . '" media="all" />
    <title>Seite nicht gefunden</title>
    <meta name="generator" content_box="TYPO3 4.0 CMS" />
    <SCRIPT LANGUAGE="JavaScript">
       <!--
       function doRedirect() {
        window.location="http://'.$server_name . BASEPATH . REDIRECTPAGE. $urlparameters .'";
       }
     
       doRedirect();
       // -->
    </script>
</head>
<body>
    <div id="rsys_shade">
        <div id="page_box">
            <div id="navigation_box_level1">
                <div id="rsys_logo">
                </div>
            </div>
            <div id="header" >
            </div>   
            <div  id="navigation_box_level2">   
            </div>
            <div  id="content_box_1">
                <h1>Seite nicht gefunden</h1>
                <p>Die von ihnen angeforderte Seite wurde nicht gefunden</p>
                <p>Wenn sie nicht innerhalb von 3 Sekunden weitergeleitet werden klicken sie auf folgenden Link:<br>
                <a href="http://'.$server_name . BASEPATH . REDIRECTPAGE . $urlparameters . '">'.$server_name.'</a></p>
            </div>
        </div>
        <div  id="footer">   
        </div>
    </div>
</body>
</html>
';
   
  exit;
 }
}
?>

Aber ob dieser Code sicher ist weiss ich nicht so genau, wenn jemand dazu etwas sagen könnte wäre ich dankbar dafür! Kontakt

Erstellt: 07/2010| Geändert: 03/2023

Fehlerseite und RealURL

Habe ewig gesucht weil Fehlerseite nicht angezeigt wurde. Grund: RealURL Konfiguration

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
        'init' => array(
            'enableCHashCache' => 1,
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => 1,
            'enableUrlEncodeCache' => 1,
            'respectSimulateStaticURLs' => 0,
            'postVarSet_failureMode'=>'',

postVarSet_failureMode war auf 1, was alle Fehler auf die tieferliegende Seite umleitet und meine Fehlerroutine ausgeschaltet hat.

Erstellt: 07/2010| Geändert: 03/2023

Alte TYPO3 Versionen: Fehler und cms_showpic

Mir ist aufgefallen, dass im Google Index Bilder sind, die schon lange gelöscht wurden. Dies sind allesamt Bilder, die mit ?eID=tx_cms_showpic angezeigt werden (bzw. wurden). Nun ist es so, dass das aufgerufene Skript typo3/sysext/cms/tslib/showpic.php im Falle eines nicht existierenden Bildes eine UnexpectedValueException auslöst. Diese wiederum wird von t3lib/error/class.t3lib_error_productionexceptionhandler.php behandelt.

Das sieht dann so aus:

Oops, an error occured!
Parameter Error: No file or no parameters given.
(oder Parameter Error: Wrong parameters sent.)


Das unschöne dabei ist, dass der Code 500 Internal Server Error zurückgegeben wird - und in diesem Fall nimmt es Google nicht aus dem Index. Hier findet man ca 280.000 Einträge von indizierten Fehlern in Google wenn man nach "eID=tx_cms_showpic Parameter Error" sucht. Das gefällt mir nicht.

Ich habe dazu die entsprechende Stelle im TYPO3 Sourcecode editiert und gebe den Fehlercode 404 zurück, damit das Bild aus dem Suchindex verschwindet. Nachteil: Alle Exceptions lösen nun diesen Code aus statt 500.

Workaround

Editieren von error/class.t3lib_error_productionexceptionhandler.php

public function echoExceptionWeb(Exception $exception) {
if (!headers_sent()) {
    header("HTTP/1.0 404 Not Found"); // rsys removed: header("HTTP/1.1 500 Internal Server Error");
}

Erstellt: 03/2011| Geändert: 03/2023