Die vorgestellte Lösung mit der Klasse "user_pageNotFound" ist nicht empfehlenswert. Fehlt die Error-Seite, in die die Fehlermeldung geparst werden soll, gerät der Server enorm unter Last, auch wenn die Klasse "user_pageNotFound" nur einmal aufgerufen wird. Offensichtlich kommt es zu einem Loop durch den rekursiven Seitenaufruf, der erst beendet wird, wenn die Script-Laufzeit überschritten wird.
Bessere Lösung für Multidomain 404 Fehlerseiten
Dmitry Dulepov und ben van 't ende haben vor längerem einen Artikel zum "Improved 404 handling" geschrieben, in dem eine einfachere und bessere Lösung vorgestellt wird.
Im Installations-Tool oder der localconf.php trägt man ([FE][pageNotFound_handling] = /http-error-404/ ein. Tritt ein 404 Fehler auf, wird in der Root der jeweiligen Domain nach einer Seite mit diesem Titel oder "Speaking URL path segment" gesucht und falls vorhanden angezeigt. Dort kann ein ganz individueller Text für die jeweilige Domain stehen. Fehlt die Seite, erscheint eine automatisch generierte typo3 Fehlermeldung, dass die Seite http-error-404 nicht gefunden wird.
Für das Error-Handling ist die Datei "typo3/sysext/cms/tslib/class.tslib_fe.php" zuständig. Unter "// Check recursion" wird mit "exit" vermieden, dass es zu einem Loop kommt, wenn die vorgesehene Seite mit der Fehlermeldung nicht gefunden wird.
Will man auf der Fehlermeldungs-Seite den vergeblich gesuchten Dateinamen ausgeben, geht das derzeit nur mit einem Hack. Denn in der "typo3/sysext/cms/tslib/class.tslib_fe.php" wird im Falle eines 404er Fehlers zum Fehler-Dokument weitergeleitet, so dass die vergeblich gesuchte Seite in keiner Globalen-Variable (t3lib_div::getIndpEnv('REQUEST_URI')) mehr zu finden ist. Als 'REQUEST_URI' steht jetzt http-error-404.
Fügt man in Zeile 1381 ein (vor: <pre>echo $content; // Output the content</pre>)
$content = str_replace('###CURRENT_URL###', t3lib_div::getIndpEnv('REQUEST_URI'), $content);
wird der Marker ###CURRENT_URL###, der im normalen Seiten Text verwendet werden kann, ersetzt.
Beispiel:
Überschrift: HTTP Fehler 404 - Seite nicht gefunden
Text: Die Seite www.meinedomain.de###CURRENT_URL### wurde nicht gefunden. Hier geht es zu unserer <link 2>Startseite</link>.