Andreas Korthaus: Problem mit .htaccess und Verzeichnisstruktur

Beitrag lesen

Hallo!

irgendwie werde ich aus den ganzen .htaccess-Sachen immer nur "halbschlau", nie so richtig, auch in der Apache-Doku finde ich meist genau das nicht was ich gerade wissen will.

ich habe folgende Verzeichnisstruktur:

doc-root (öffentlich zugänglich)
    |
    + admin (nur für User aus Gruppe "admin" zugänglich)
    |
    + user (nur für User aus Gruppe "user" zugänglich)

soweit eigentlich ganz einfach, in die beiden Verzeichnisse je eine entsprechende .htaccess und es funktioniert prima.

Das Problem ist, ich habe im doc-root eine html-Datei mit 2 Links:

1. Link ins Verzeichnis "/admin"
2. Link ins Verzeichnis "/user"

Was ich jetzt gerne hätte, ist das wenn eine der Authentifizierungen nicht funktionioniert(401), dass der Anwender auf eine Datei im doc-root geleitet wird, halt in der .htaccess per

ErrorDocument 401 /request.php?error=401

Das Problem daran, die beiden .htaccess liegen im Unterverzeichnis, also müßte das heißen

ErrorDocument 401 ../request.php?error=401

aber das geht nicht, es wird einfach nicht auf besagte Seite geleitet, sondern auf eine Standardseite. Mit einem absoluten Pfad dachte ich könnte es klappen, halt absolut vom Dateisystem aus:

ErrorDocument 401 /www/bla/bla/request.php?error=401

Das geht genausowenig wie die vorherige Variante. Da mit aber im Kopf rumschwebt, das hier das root-Verzsichnis = dem doc-root des Apache sein muß, müßte ja die ursprüngliche Variante

ErrorDocument 401 /request.php?error=401

funktionieren, was aber genauso wenig geht.

Aber da gab es ja noch was mit <Directory>. Ich hatte mir überlegt, nur eine .htaccess in den doc-root zu legen, und hier die verschiedenen Auth-Bereiche mit <Directory> definieren. Das hätte den Vorteil, dass ich

ErrorDocument 401 /request.php?error=401

verwenden könnte. Das habe ich dann so gemacht:

<Directory /admin>
  AuthType Basic
  AuthName "Admin-Login"
  AuthUserFile /www/bla/bla/passwd
  AuthGroupFile /www/bla/bla/groups
  Require group admin
</Directory>

Das ergibt einen 500er Fehler, ohne weitere Angabe in der Error-Log. Dann habe ich noch den absoluten Pfad an Stelle von "/admin" versucht, also "/www/bla/bla/admin" probiert, mit selbem Ergebnis. Ich kann es einfach nicht verstehen. Was mache ich falsch? Das muß doch _beides_ irgendwie gehen, aber wie? Bin dankbar für jeden Tipp oder Link!

Viele Grüße
Andreas