Fehlerseite

Verschiedene Möglichkeiten mit 404 Fehlern umzugehen.

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

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: 10/2015

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: 10/2015

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: 10/2015