Der Martin: Mit htaccess Variabel bei Fehler weitergeben

Beitrag lesen

Hallo Nina,

ich beziehe mich auf den folgenden Beitrag im Archiv:
http://forum.de.selfhtml.org/archiv/2005/6/t109260/.

der gibt zwar schon den entscheidenden Hinweis, aber eine weitere wichtige Information fehlt noch.

egal ob ich das relativ oder mit dem vollst. Pfad angebe.

Der Knackpunkt ist, dass du hier sehr wohl den vollständigen Pfad angeben solltest. Nur eben nicht den Pfad, den ein HTTP-Client sieht, sondern den Pfad *im Dateisystem deines Servers*. Du musst also wissen, welches Verzeichnis auf dem Server der obersten Ebene deiner Website entspricht. Das kriegst du raus, indem du deinen Provider fragst; aber auch phpinfo() verrät dir diese wichtige Kleinigkeit (such in der Ausgabe nach DOCUMENT_ROOT).

#error documents
ErrorDocument 400 http://meineseite.de/fehler.php
ErrorDocument 401 http://meineseite.de/fehler.php
[...]

Wenn du das so machst, kriegt dein Browser nicht den entsprechenden Statuscode geliefert, sondern nur eine Weiterleitung:
"Das angeforderte Dokument liegt nicht da, wo du suchst, sondern unter http://meineseite.de/fehler.php. Hol's dir bitte von dort."
Der Browser folgt dieser Aufforderung und ruft die Fehlerseite ab. Für ihn ist das ein ganz normaler HTTP-Request, auf technischer Ebene deutet nichts darauf hin, dass ein Fehler aufgetreten ist.
Notierst du die Fehlerseiten dagegen mit

ErrorDocument 401 /path/to/document/root/fehler.php

dann regelt der Server das komplett selbst. Er liefert den Statuscode 401 (als Beispiel) und das angegebene ErrorDocument. Der Browser erkennt, dass ein Fehler aufgetreten ist, und was noch schöner ist: In der Adresszeile bleibt die Adresse der angeforderten Seite stehen, die den Fehler ausgelöst hat! Auch innerhalb des ErrorDocument kannst du nun -da es anscheinend in PHP realisiert ist- auch mit $_SERVER['REQUEST_URI'] die ursprünglich vom Besucher angeforderte Seite abfragen.

ErrorDocument 403 http://meineseite.de/fehler.php
ErrorDocument 404 http://meineseite.de/fehler.php
ErrorDocument 500 http://meineseite.de/fehler.php

Nebenbei bemerkt: Warum verwendest du für alle Fehlerbedingungen dieselbe Seite? Das bringt dem Besucher doch keine wirkliche Information.

Schönen Tag noch,
 Martin

--
Es gibt Tage, da gelingt einem einfach alles.
Aber das ist kein Grund zur Sorge; das geht vorbei.