Webserver/htaccess/Fehlermeldungen
Per Voreinstellung zeigt der Webserver eine in seiner Konfiguration festgelegte HTML-Datei oder eine hart kodierte Fehlermeldung an, wenn ein Zugriffsfehler passiert, z. B. wenn eine angeforderte Datei nicht existiert.
Dieses Kapitel zeigt, wie sie mit einer .htaccess-Datei individuelle Fehlermeldungen ausgeben können.
Inhaltsverzeichnis
Individuelle Fehlermeldungen gestalten
Mit ErrorDocument definieren Sie eine eigene Meldung oder Datei, die im Fehlerfall angezeigt wird. Hinter dem Schlüsselwort notieren Sie den gewünschten HTTP-Status-Code – typische Fehler, die auftreten können, sind jene mit den Nummern 403, 404 und 500. Hinter der Nummer mit dem Status-Code können Sie entweder in Anführungszeichen eine eigene Fehlermeldung notieren, oder Sie geben die Adresse einer Webseite an, die im Fehlerfall angezeigt werden soll. Es gibt drei mögliche Varianten:
hart kodierte Meldungen
Das bedeutet, dass die Meldung direkt vom Webserver erzeugt wird. Der Wortlaut muss also auch vorgegeben werden, was in folgenden Formen geschehen kann:
# Text für individuelle Fehleranzeige
ErrorDocument 404 "Ups. Was haben Sie denn da für Unsinn angestellt -\
die angeforderte Ressource gibt es hier ja gar nicht ;-)"
Die Ausgabe an den Browser erfolgt als reiner Text.[1]
# HTML für individuelle Fehleranzeige
ErrorDocument 404 "<html><head><title>Seite nicht vorhanden</title>\
<style>\
body {background-color:#EEEEEE;}\
h1,p,a {font-family:Helvetica,Arial,Sans-serif;}\
h1 {font-size:1.7em; margin-bottom:0em;}\
a:link,a:visited {color: midnightblue;}\
a:hover {background-color:LightBlue;}\
</style>\
</head><body>\
<h1>Fehler 404</h1>\
<p>Die angeforderte URL kann nicht gefunden werden.</p>\
<p>Probieren Sie es bitte erneut mit einem Aufruf der\
<a href='/'>Startseite</a>.</p>\
</body></html>"
Wie Sie sehen, sind HTML-Tags in solchen Meldungstexten zulässig. Es muss wiederum entweder alles hintereinander in einer Zeile geschrieben werden, oder Sie setzen den Backslash als Zeilentrenner ein. Ihren Browser interessieren solche Backslashes hier nicht.
Sie können, wenn Sie es für unabdingbar halten, in solchen hart kodierten HTML-Anzeigen sogar CSS-Bereiche (wie im angegebenen Beispiel) und JavaScript vorgeben. Allerdings müssen Sie beachten, dass doppelte Anführungszeichen die Fehlermeldung begrenzen und Sie somit einfache Anführungszeichen für HTML-Attribute verwenden müssen.
lokale Fehlerseiten
Anstelle solcher hart kodierter Fehlermeldungen, die vom Server direkt ausgegeben werden, können Sie natürlich auch eigene HTML-Dateien für die Fehleranzeige einsetzen.
Das bedeutet, dass ein lokales HTML-Dokument, das im selben Verzeichnis wie Ihre .htaccess
-Datei liegt, die gewünschte Anzeige enthält. Dazu wird folgendes notiert:
# verzeichnisspezifisches HTML-Fehlerdokument
ErrorDocument 404 /verzeichnispfad/fehler404.html
Bei dieser Art der Notation gilt die Anzeige nur für das gerade aktuelle Verzeichnis. Das kann nützlich sein, wenn Sie Ihr Webangebot so strukturiert haben, dass ein Verzeichnis nur Grafiken, ein weiteres nur Bilder und ein drittes nur weitere Medien enthält und Sie bei eventuellen Fehlern auch inhaltsbezogene Meldungen ausgeben möchten.
ErrorDocument 404 fehler404.htm
# projektspezifisches HTML-Fehlerdokument
ErrorDocument 404 /fehler404.htm
Wenn Sie das so notieren, brauchen Sie nur eine einzige Datei mit diesem Namen im Wurzelverzeichnis Ihres Webangebots. Das bedeutet aber auch, dass ihre Fehlerbeschreibung nicht variiert werden kann.
Eine Möglichkeit individuelle Fehlermeldungen auszugeben, wird in diesem Tutorial gezeigt:
externe Fehlerdokumente
Das bedeutet, dass die gewünschte Fehlerseite über eine externe URL angesprochen wird. Der Eintrag erhält dann folgendes Aussehen:
# externes HTML-Fehlerdokument
ErrorDocument 404 https://example.com/fehler404.htm
Exkurs: Node.js
Alle in diesen Artikeln gezeigten Beispiele von .htaccess-Dateien gelten nur für Apache-Server!
In Node.js wird dies direkt im Filesystem-Modul erledigt:
// Check if the requested file exists
fs.exists(filename, function (exists) {
// If it doesn't
if (!exists) {
// Output a red error pointing to failed request
console.log(RED + 'FAIL: ' + filename);
// Redirect the browser to the 404 page
filename = path.join(process.cwd(), '/404.html');
// If the requested URL is a folder, like http://localhost:8000/catpics
} else if (fs.statSync(filename).isDirectory()) {
// Output a green line to the console explaining what folder was requested
console.log(GREEN + 'FLDR: ' + WHITE + filename);
// redirect the user to the index.html in the requested folder
filename += '/index.html';
}
Hauptartikel: Node.js/Webserver
Quellen
- ↑ Der Internet Explorer stellte solche servergenerierte Fehlermeldungen erst dann dar, wenn sie mehr als 512 Bytes belegten. Man konnte dieses Verhalten des Internet Explorer ändern, indem man in den Internetoptionen die als Voreinstellung aktivierte Option "Kurze HTTP-Fehlermeldungen anzeigen" deaktivierte.