Eigene Fehlerseite nur für ein bestimmtes Verzeichnis
OnkelOtto
- webserver
0 Alex0 Der Martin0 OnkelOtto0 Der Martin
Hallo
Mann kann ja für seine eigene webseite mittels der .htaccess-Datei einrichten, dass eine eigene 404-Fehlerseite angezeigt wird, wenn eine nicht vorhandene datei aufgerufen wird.
Ich würde nun gerne wissen, ob es auch möglich ist, für ein ganz bestimmtes Verzeichnis, eine andere 404-Fehlerseite anzeigen zu lassen.
Beispiel:
http://www.example.org/verzeichnis-10/blabla.html
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404.html
http://www.example.org/bilder/trallalla.html
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404-2.html
Ist so etwas irgendwie machbar?
Gruß
Otto
Hallo,
Ich würde nun gerne wissen, ob es auch möglich ist, für ein ganz bestimmtes Verzeichnis, eine andere 404-Fehlerseite anzeigen zu lassen.
Ist so etwas irgendwie machbar?
Ja, indem du in dem besonderen Verzeichnis nochmal eine .htaccess Datei anlegst, die auf die abweichende Fehlerseite verweist. Damit wird dann die Stadardfehlerseite, die du über die .htaccess im Hauptverzeichnis festlegst, "überschrieben".
Gruß
Alex
Hi,
Ich würde nun gerne wissen, ob es auch möglich ist, für ein ganz bestimmtes Verzeichnis, eine andere 404-Fehlerseite anzeigen zu lassen.
natürlich, denn die Konfigurationsdatei .htaccess gilt immer für das Verzeichnis, in dem sie sich befindet, und die unterhalb davon liegenden.
http://www.example.org/verzeichnis-10/blabla.html
http://www.example.org/bilder/trallalla.html
Diese zwei Verzeichnisse liegen in der Hierarchie sogar "nebeneinander", beeinflussen sich also nicht einmla gegenseitig.
http://www.example.org/fehler404.html
http://www.example.org/fehler404-2.html
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.
So long,
Martin
Hi Martin
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?
natürlich, denn die Konfigurationsdatei .htaccess gilt immer für das Verzeichnis, in dem sie sich befindet, und die unterhalb davon liegenden.
Ah OK alles klar.
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?
Beispiele:
http://www.example.org/verzeichnis-10/blabla.html
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404.php
http://www.example.org/bilder/trallalla.html
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404.php
http://www.example.org/maus.jpg
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404.php
http://www.example.org/bilder/hund.gif
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404.php
http://www.example.org/bilder/katze.jpg
Hier soll die folgebde Fehlerseite angezeigt werden:
http://www.example.org/fehler404-2.php
Es soll also für alle Verzeichnisse und Unterverzeichnisse meiner kompletten Webste die "normale" 404-Fehlerseite angezeigt werden.
Außer, wenn jemand eine nicht vorhandene .jpg-Datei im Unterverzeichnis "bilder" aufruft.
Dann soll die zweite 404-Fehlerseite angezeigt werden.
Gruß
Otto
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
Hallo
ErrorDocument 404 /fehler404.html
Ja, genau so habe ich das auch bei mir in der .htacess-Datei stehen.
Ich hatte mich da blöd ausgedrückt.
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.
Ist es nicht möglich, in der .htaccess-Datei dafür zu sorgen, dass "ErrorDocument 404 /fehler404.html
" nur bei .jpg-Dateien ausgeführt wird?
Sinngemäß quasi so etwas hier:
<FilesMatch ".(jpg)$">
ErrorDocument 404 /fehler404.html
</FilesMatch>
Gruß
Otto
Hi,
ErrorDocument 404 /fehler404.html
Ja, genau so habe ich das auch bei mir in der .htacess-Datei stehen.
aha, dann hast du durch dein Beispiel ein mögliches Problem gezeigt, das du gar nicht hast.
Ist es nicht möglich, in der .htaccess-Datei dafür zu sorgen, dass "
ErrorDocument 404 /fehler404.html
" nur bei .jpg-Dateien ausgeführt wird?Sinngemäß quasi so etwas hier:
<FilesMatch ".(jpg)$">
ErrorDocument 404 /fehler404.html
</FilesMatch>
Warum liest du nicht selbst nach? Tatsächlich ist für die ErrorDocument-Direktive der Kontext "directory" mit angegeben, was gemäß der Erläuterung bedeutet, dass diese Direktive auch in einem der Container <Directory>, <Location> oder <Files> vorkommen darf. Das hätte ich nicht erwartet, ehrlich gesagt.
<FilesMatch> wird zwar nicht aufgeführt; ich vermute aber, dass das auch zu dieser Aufzählung gehören sollte. Und selbst wenn nicht - Dateien mit einer bestimmten Extension oder einer Gruppe bestimmter Extensions kann man ja auch mit <Files> definieren.
So long,
Martin