Der Martin: Eigene Fehlerseite nur für ein bestimmtes Verzeichnis

Beitrag lesen

Hallo,

Aber du möchtest die Fehlerseiten in der .htaccess hoffentlich nicht als HTTP-Ressourcen angeben? Dann wird der Browser nämlich im Fehlerfall nur mit einem Redirect angewiesen, die Fehlerseite selbst abzurufen, und bekommt sie dann mit Status 200. Vom ursprünglichen Fehler merkt er nichts.
Meine 404-Fehlerseite ist eine PHP-Datei.
Und bei der habe ich ganz oben das drin:
<?php header("HTTP/1.1 404"); ?>
Somit müsste die 404_Fehlerseite doch den Statuscode 404 zurückliefern, oder?

ja, das stimmt schon - aber der Status 404 kommt nicht mehr im Kontext der ursprünglich angefragten URL, sondern im Kontext der Fehlerseite, wo er sinnfrei ist. Beispiel:

* Besucher ruft /somepage.html auf, die existiert
   -> wird also mit Status 200 ausgeliefert.
 * Besucher ruft /dummypage.html auf, die existiert nicht.
   -> Browser bekommt Status 301 (Redirect) mit dem Hinweis "Hol dir das Dokument unter /fehler404.html ab".
   Browser ruft /fehler404.html ab
   -> Browser bekommt die angefragte Seite mit Status 404.

Dummerweise steht jetzt in der Browser-Adresszeile die Adresse des zuletzt angefragten Dokuments, also /fehler404.html, und das ist natürlich Murks. Da sollte ja die Request-URL stehen, die den Fehler ausgelöst hat. Hier also /dummypage.html.

Um diesen zusätzlichen browserseitigen Request zu vermeiden, darf man die Adresse des ErrorDocument eben nicht als HTTP-Ressource angeben, sondern als Datei relativ zum DocumentRoot. In deinem Fall also:

ErrorDocument 404 /fehler404.html

Ist es denn auch möglich, diese zweite 404-Fehlerseite nur für einen bestimmten Dateityp gilt.
Also so, dass in dem Verzeichis "bilder" nur nicht vorhandene .jpg-Dateien zu der zweiten Fehlerseite führen?

AFAIK nicht. Aber wenn dein Error-Dokument sowieso ein PHP-Script ist, kannst du ja darin die ursprüngliche Request-URL abfragen und davon abhängig unterschiedlich reagieren. Das wäre die einfachste Lösung, die mir dazu einfällt.

So long,
 Martin

--
Der Professor sitzt beim Essen in der Mensa. Ein Student setzt sich ihm unaufgefordert gegenüber.
Professor: Seit wann essen denn Schwein und Adler an demselben Tisch?
Student:   Na gut, dann flieg' ich eben zum nächsten Tisch.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(