Apache: Fehlerseiten testen
20.12.2010 in: Trickkiste und Webdesign • 2 Kommentare
Letzte Änderung: 21.05.2011, 14:23 Uhr.
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! undexample.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
- Logfiles analysieren
- WordPress und .htaccess: Request säubern
- Zugriff verboten: Wie man Skripte gegen HTTP-Aufrufe sperrt
- Authentifizierung mit PHP und UTF-8
Chris am 15.01.2011 · 14:17
Wirklich eine nette Idee, danke dafür.
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.