Die Original-Fehlerseite liegt hier: /templates/system/error.php
Will man eine eigene Fehlerseite machen, legt man sich eine eigene error.php in seinem verwendeten Template-Verzeichnis an: /templates/MeinTemplate/error.php
Joomla greift zunächst stets auf die Dateien im eigenen Template-Verzeichnis zu. Die Systemdatei wird also quasi überschrieben mit der eigenen Datei.
Möglichkeit 1
Diese eigene error.php kann nach Belieben selbst gestaltet werden. Allerdings wird nur HTML-Code (und PHP-Code natürlich) erkannt. Modulpositionen hingegen werden nicht erkannt und ergo nicht dargestellt.
Möglichkeit 2
Man kann aber auch einen Beitrag anlegen mit dem Fehlertext und diesen direkt aufrufen bei einem Fehler und bleibt damit im Template des Webauftritts. Oder man kann natürlich auch ein neues Template wie gewohnt erstellen und das explizit diesem Beitrag zuweisen. Der Vorteil ist, dass man stets ein Template hat, dass alles bietet und kann, was für andere Beiträge auch gilt.
Der Beitrag, der erstellt wurde, muss nun noch einem Menü zugeordnet werden. Damit niemand die Fehlerseite per Menülink aufrufen kann, gibt es die Möglichkeit eines Schattenmenüs. Also eines Menüs, dass öffentlich arbeitet, aber niemand sieht.
Dazu legen wir zunächst ein neues Menü an:
Diesem Schattenmenü, dass ich in meinem Beispiel auch so genannt habe, weise ich jetzt meinen Beitrag zu. Also alles so, wie wir es immer machen. Allerdings positioniere ich kein Menümodul in meinem Template, das dass Schattenemnü beinhaltet. Ich ignoriere die Module komplett. Dadurch wird das Menü nirgends angezeigt, dennoch verweist es auf einen öffentlich zugänglichen Beitrag und ich kann dadurch diesen Beitrag ansprechen, in dem ich ihn explizit aufrufe in meiner error.php:
Dieser Code fragt zunächst die Fehlernummer ab. Liegt die zwischen 400 und 500 wird der Beitrag "404.html" aufgerufen. Und mit dem Beitragsaufruf wird praktischerweise auch das zugeordnete Template geladen. Wichtig ist, dass ihr vor der Site noch eure Domain schreibt und falls Joomla in einem Unterverzeichnis liegt, dann auch den Verzeichnisnamen mit angebt - also den absuluten Pfad. Macht ihr das nicht, wird der Dateinamen einfach hinter der aktuellen Aufrufadresse gehängt. Und wird eine URL mit einem Unterverzeichnis aufgerufen, kann die 404.html nicht geunden werden (Danke an Manfred für den Hinweis!).
Wobei "404" der Alias-Name des Menüverweises darstellt und bei eingeschalteten SEO dann das "html" angehängt wird. Wer nicht mit SEO arbeitet oder eine anderen URL-Aufbau hat, muss natürlich dann den Alias oder die entsprechende URL entsprechend in diese Datei eintragen.
Damit ich auch andere Fehler abfangen kann und nicht nur die "Seite nicht gefunden"-Fehler, habe ich im obigen Code noch eine zweite Fehler-Seite angegeben, die einen allgemeinen Text enthält und immer dann aufgerufen wird, wenn die Fehlernummer außerhalb 400 bis 500 liegt. Voraussetzung ist allerdings, dass der Fehler nicht so gravierend ist, dass überhaupt nicht mehr Joomla geladen wird. Wenn das passiert generiert der Webserver seine eigenen Fehlermeldungen.
Ich selber benutze die zweite Möglichkeit. Wer sich das mal anschauen möchte - hier wird eine Seite aufgerufen, die es nicht gibt:
Fehlernummern (Statuscode) und ihre Bedeutung
Eine Variante, die bei mir läuft:
Der Unterschied ist, dass ich die beiden Fehler 403 und 404 auswerte. 403 ist "unerlaubter Zugriff" und 404 "Seite nicht gefunden". Eine solche Liste kann man natürlich entsprechend fortführen. Dazu mal den Statuscode anschauen, den ich oben verlinkt habe.
Wenn ihr diesen Code kopiert, bitte nicht vergessen meinen Domainnamen auszutauschen mit eurem ;)
Plugin aktivieren
Meistens reicht das schon. Sollte jedoch die Fehlerseite nicht angezeigt werden oder eine weiße Seite kommen, dann mal in die Plugin-Übersicht wechseln und das System-Plugin Umleitung aktivieren.