ErrorDocument 404 für php Dateien

Veröffentlicht am 23.12.2006 | Kommentar schreiben | Tags: php, htaccess

Bei manchen Servern tritt das Phänomen auf, dass der Apache Befehl ErrorDocument 404 mit php Dateien nicht funktioniert und dann die globale Fehlerseite, welche in der http.conf definiert ist, aufgerufen wird.

Man kann sich dabei jedoch eines kleinen Tricks bedienen. Man definiert ganz normal das ErrorDocument für html Seiten, in diesem Beispiel die Seite 404.html. D.h. für alle html Dateien greift diese Regel ganz hervorragend.

Für alle php Dateien wird diese Regel jedoch ignoriert und der Server findet in der .htaccess Datei keine Regel die für ihn auf dieses Event passt, somit verwendet der Server seine eigene Fehlerdatei.

Mit dem Befehl RewriteCond %{REQUEST_FILENAME} !-f wird überprüft, ob die

angeforderte Datei nicht existiert, trifft dieser Fall zu, wird auf die Seite Error_404 weitergeleitet. Diese Seite hat keine Endung. Für diese Art von Dateien greif jedoch die Regel ErrorDocument 404 /404.html. Somit existiert auch für php Dateien eine schöne 404 Feherseite.

Der komplette Code sieht wie folgt aus:

 
RewriteEngine On
ErrorDocument 404 /404.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.+.php /Error_404 [L]
 

Hinweis: Diese Regel sollte als letzte Regel in der .htaccess angeführt werden damit Sie keinen anderen Regeln zuvor kommt.

Zurück zur Artikel-Übersicht


Kommentare

  1. Peter Klauer schrieb am 03.03.2007 um 07:39 Uhr
    Wunderbar! Ich hatte erhebliche Probleme, eine 404-Datei auf meinem Server zu installieren. Das war der Knackpunkt.
    Ergänzend möchte ich hinzufügen, dass diese Regel ALS LETZTE Regel der Rewrite-Sektion angewandt werden sollte. Ansonsten ist ab sofort jeder umgeschriebene URL eine Fehlerseite!
    Ich denke mal, den meisten ist das klar - mir war es das nicht.
    Nochmal danke für den Hinweis!
  2. Martin Eisenführer schrieb am 19.03.2009 um 09:56 Uhr
    Super! Bei mir musste noch der Zusatz RewriteEngine On mit rein
    Gesamtcode:
    ErrorDocument 404 /404.html
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.+.php /404.html [L]

    Danke für den Hinweis.
  3. SandyK24 schrieb am 12.05.2009 um 12:40 Uhr
    Passt supi, danke!!!
  4. Tommy schrieb am 05.11.2009 um 15:46 Uhr
    Super! War schon am verzweifeln, schließlich gehört zu einer guten Community auch eine passende Fehlerseite :)
  5. Manfred Kooistra schrieb am 16.01.2010 um 15:22 Uhr
    Mir ist nicht ganz klar, warum man dann noch überhaupt die Angabe

    ErrorDocument 404 /404.html

    braucht, man könnte doch einfach ALLE fehlenden Dateien (f) und Ordner (d) mit der RewriteRule auf das Error Document umleiten, so:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) /404.html [L]

    Die eingesparte Zeile ist vielleicht nicht so wichtig, wesentlich ist, dass man in seiner .htaccess, die ja auch mal sehr umfangreich werden kann, nicht eine Regel (umleiten auf eine Seite bei 404) auf zwei Stellen verteilt hat. Die Gefahr ist dann nämlich, dass (bei Webseiten für Auftraggeber) ein anderer Bearbeiter nicht weiß oder man selbst in drei Jahren vergessen hat, dass nach dem "ErrorDocument 404 /404.html" am Anfang weiter unten noch eine andere Direktive kommt, die man mit ändern muss, wenn man z.B. das Error Document umbennent oder woander hin umleiten will (ich leite Fehler z.B. auf die Homepage um, nicht auf ein Fehlerdokument).
  6. madmadmod schrieb am 10.02.2010 um 09:36 Uhr
    genau was ich gesucht habe!
    thx
  7. Titus schrieb am 29.04.2010 um 13:13 Uhr
    Im Prinzip wird mit RewriteCond das gleiche angezeigt; der Browser bekommt aber den Status 200 OK zurück statt eines Fehler-Codes.
  8. Christian Hannemann schrieb am 30.04.2010 um 12:13 Uhr
    @Titus
    Die Regel leitet auf die Datei Error_404 weiter, welches keine PHP Datei ist. Hier greift nun wieder die ErrorDocument Regel. Die Weiterleitung findet serverintern statt wovon der Benutzer oder die Suchmaschine nichts mitbekommt.
    Es ist eben ein Workaround.
  9. Petr Bradatsch schrieb am 24.12.2010 um 22:31 Uhr
    Hat perfekt geholfen, vielen Dank!!

*


*

Letzte Artikel

Letzte Kommentare

  • tommyiscrazy ...danke schön für die Anleitung: Auf Vista Home nun uneingeschränkte Rechte :-)
  • lukas hallo,ich habe windows vista home ... und alle beiden varianten ausprobiert ...
  • Nino Guter Tip. Hat mir sehr geholfen. Vielen Dank.Grüße
  • Mike Danke für die Anleitung. In meinem Fall war es aber notwendig, das ...
  • bahman i don't now German, but that was the best Dijkstra implementation I've seen so ...
  • Hana Hallo, ich habe Vista Home und möchte Home Office 2010 testen. Download war ...
  • Joerg Danke für die korrekte und nachvollziehbare Anleitung. Endlich ein True Admin ...