Hallo Andreas,
Im Prinzip müsste es so funktionieren (in der .htaccess des Unterverzeichnisses) jedoch scheitert er glaube ich an den URL-Parametern. Für 401er sind nur lokale *PFADE* erlaubt. Mach also einen symbolischen Link (oder eine Kopie unter Windows) auf die request.php und nenne ihn error401.php. Diese Datei muss dann testen, ob sie als request.php oder error401.php aufgerufen worde.
Aber wohin kopieren? In dasselbe Verzeichnis wie die .htaccess geht ja nicht, da wird ja _nichts_ ausgeliefert, auch nicht eine 401er Seite. Das ist ja das doofe :-(
Und das mit Parametern klappt sonst immer.
Pass auf:
.htpasswd
doc-root/
request.php
error401.php => request.php
geschuetztes_verz/
.htaccess
Parameter klappen aber nur, weil ein 302-Redirect erfolgt. Der *darf* aber bei 401 nicht erfolgen. Ergo musst Du den kompletten Pfad auf das Fehlerdokument angeben und kannst _keine_ Paramter übergeben.
Ach ja, Deine PHP-Datei muss auf jeden Fall noch den Header ("Status: 401 Authorization required"); mitschicken!
ich mache das ganz ohne PHP. Es ist eine "normale" basic-Authentification, nur die 401er Seite ist PHP, da die einige Aktionen ausführen soll(z.B. "meldung machen " per email...).
Schon klar - aber PHP sendet Standardmäßig den 200er - auch im Falle eines Fehlerdokuments. Daher musst Du ihn "manuell" korrigieren.
Grüße,
Christian
Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
-- Albert Einstein