toscho.design

Apache: Fehlerseiten testen

Mit der Direktive ErrorDocument können wir dem Apachen sagen, welche Datei oder Nachricht er bei welchem Statuscode ausgeben soll.

ErrorDocument 403 /403.php
ErrorDocument 401 /401.php
ErrorDocument 410 "<h1>Wech! Pech!</h1>"

Aber wie testen wir die? Den Status 404 können wir einfach durch eine falsche Adresse auslösen; 401 kommt aber erst, wenn wir an einer Authentifizierung gescheitert sind. Ganz bestimmt wollen wir nicht für jeden Fehler einen separaten Test bauen, das dauert viel zu lange.

Die Antwort: mit mod_rewrite.

RewriteCond %{QUERY_STRING} ^status=401$ 
RewriteRule ^ - [L,R=401]
RewriteCond %{QUERY_STRING} ^status=403$ 
RewriteRule ^ - [L,R=403]
RewriteCond %{QUERY_STRING} ^status=404$ 
RewriteRule ^ - [L,R=404]
RewriteCond %{QUERY_STRING} ^status=410$ 
RewriteRule ^ - [L,R=410]
RewriteCond %{QUERY_STRING} ^status=500$ 
RewriteRule ^ - [L,R=500]

Rufen wir jetzt eine beliebige Adresse auf und hängen den gewünschten Statuscode an, so liefert der Server brav unsere Fehlerseite.

  • example.com/?status=403 gibt uns also die 403.php,
  • example.com/?status=410 den Text Wech! Pech! und
  • example.com/?status=500 den Serverfehler.

Mit zwei kleinen Bookmarklets, die wir als Lesezeichen speichern, können wir jetzt fröhlich unsere Testcodes abklettern:

Letzte Ziffer + 1 · Letzte Ziffer - 1

Wenn alles so aussieht wie gewünscht, sollten wir die Regeln natürlich wieder entfernen. Es genügt völlig, wenn nur wir testen.

Weitere Lektüre

2 Kommentare

  1. Chris am 15.01.2011 · 14:17

    Wirklich eine nette Idee, danke dafür.

  2. Holger am 19.10.2011 · 10:08

    Das iat ein guter Tipp. Ich habe vor einiger Zeit noch alle Szenarien einzeln durchgetestet. Hätte ich den Artikel eher gefunden, hätte ich mir warscheinlich ein bisschen Arbeit ersparen können.
    Wenn ich in Zukunft mal wieder in so eine Situation komme, werde ich deinen Tipp anwenden.Danke dafür.