Mar
30
2005

Custom Apache Errors

Ich habe mich endlich mal dran gemacht ein paar spassigere HTTP Error Messages für den Apache hier zu basteln. Die standardmässigen sind einfach zu langweilig. Hirschy war so nett mich mal mit ein paar netten Sprüchen zu versorgen.

Die Fehler werden alle von einem Script abgefangen, dem der Statuscode übergeben wird.
>>> Sourcecode

Im Apache muss nur noch in der httpd.conf für jede abgefangene Fehlermeldung ein Eintrag gemacht werden:

# Custom Response Messages
ErrorDocument 402 http://no-panic.at/error.php?e=402
ErrorDocument 403 http://no-panic.at/error.php?e=403
ErrorDocument 404 http://no-panic.at/error.php?e=404
ErrorDocument 405 http://no-panic.at/error.php?e=405
ErrorDocument 406 http://no-panic.at/error.php?e=406
ErrorDocument 407 http://no-panic.at/error.php?e=407
ErrorDocument 409 http://no-panic.at/error.php?e=409
ErrorDocument 410 http://no-panic.at/error.php?e=409
ErrorDocument 411 http://no-panic.at/error.php?e=411
ErrorDocument 414 http://no-panic.at/error.php?e=414
ErrorDocument 415 http://no-panic.at/error.php?e=415
ErrorDocument 417 http://no-panic.at/error.php?e=417

—————————————————–
Wichtig!
Die Direktive für den Fehler 401 MUSS ein lokaler Redirect sein, da sonst nicht der richtige Response an den Client geschickt wird und daher vermutlich keine Aufforderung zur Passwort eingabe erfolgt.
—————————————————–

Leider hab ich keine Möglichkeit gefunden, wie man das ganze bewerkstelligen kann ohne einen externen Redirect zu machen (mittels http://…) sodass es trotzdem für alle Domains auf diesem Server gilt. Wenn jemand Ideen hat, wäre ich sehr erfreut :) (evtl. mittels mod_rewrite ?).
Wenn man intern weiterleitet hat man nämlich den Vorteil, dass etliche Variablen vom Server gleich gesetzt werden, man müsste also nichtmal den Response Code per GET übergeben, sondern könnte ihn direkt in PHP per $_SERVER['REDIRECT_STATUS'] auslesen. Zusätzlich würden noch einige andere sehr interessante Variablen gesetzt werden, die man dann weiterverarbeiten kann.

Anschließend noch ein paar Beispiele:

Vorschläge zu weiteren Error Messages sind bitte erwünscht!
Auch Ideen, welche Bilder man bei den jeweiligen Messages verwenden könnte.
Fragen, Wünsche und vor allem Ergänzungen/Anmerkungen zum PHP Code sind ausdrücklich erbeten ;)

Written by Florian Beer in: linux,server
rel-tag , ,

2 Comments »

  • sushie

    ich hab in meinem http.conf folgenden eintrag:

    # Global Aliases
    Alias /apache_errors “/var/www/htdocs/apache_errors/”

    und auch:

    ErrorDocument 404 /apache_errors/?e=404

    das bewirkt dass der ordner mit den fehermeldungen in allen domains des server zur verfügung steht… ev. funkt das auch für dich? $

    *mfg
    sushie

    Comment | 10. January, 2006
  • wow, danke :)

    das war wohl zu offensichtlich für mich *g*
    ich habs noch nicht ausprobiert, aber rein vom logischen her sollte das mein problem lösen!

    Comment | 10. January, 2006

RSS feed for comments on this post.
TrackBack URL.

Leave a comment