mehrere <Files>-Direktiven in einer .htaccess-Datei
Tron
- webserver
Hallo,
ich möchte mehrere <Files>-Direktiven in einer .htaccess-Datei anwenden.
Ich habe mehrere Dateien, die mit "sr-" anfangen und mit ".php" enden. Diese sollen grundsätzlich alle durch die Benutzergruppe "admins" geöffnet werden können.
Nun gibt es noch drei spezielle Dateien ("sr-dvds.php", "sr-cds.php" und "sr-spiele.php"), die ZUSÄTZLICH zu den "admins" noch durch die Gruppe "friends" geöffnet werden können sollen.
Folgendes Konstrukt funktioniert allerdings nicht so ganz:
<Files ~ "^sr-(dvds|cds|spiele).php$">
AuthType Basic
AuthName 'privater Bereich'
AuthUserFile /home/www/web123/html/ht/.htuser
AuthGroupFile /home/www/web123/html/ht/.htgroup
Require group friends
</Files>
<Files ~ "^sr-*.php$">
AuthType Basic
AuthName 'Administrations-Bereich'
AuthUserFile /home/www/web123/html/ht/.htuser
AuthGroupFile /home/www/web123/html/ht/.htgroup
Require group admins
</Files>
Werden <Files>-Direktiven einfach sequentiell abgearbeitet oder gibts da andere Einschränkungen?
Vielen Dank für die Hilfe.
Hallo!
<Files ~ "^sr-*.php$">
Du meinst wohl eher:
<Files ~ "^sr-.*\.php$">
Werden <Files>-Direktiven einfach sequentiell abgearbeitet oder gibts da andere Einschränkungen?
Die <Files> werden "gemerged", d.h. alles, was auf einen Request zutrifft, wird in einen großen Topf geworfen, als ob's direkt hintereinander stünde. Dann hast Du aber plötzlich widersprüchliche Angaben:
require group friends
require group admins
Deswegen klappt's nicht. Die einfachste Möglichkeit, wäre hier mit Satisfy Any zu arbeiten:
<Files ~ "^sr-(dvds|cds|spiele)\.php$">
AuthType Basic
AuthName 'privater Bereich'
AuthUserFile /home/www/web123/html/ht/.htuser
AuthGroupFile /home/www/web123/html/ht/.htgroup
Require group friends
Satisfy Any
Order Deny,Allow
Deny from all
</Files>
<Files ~ "^sr-.*\.php$">
AuthType Basic
AuthName 'Administrations-Bereich'
AuthUserFile /home/www/web123/html/ht/.htuser
AuthGroupFile /home/www/web123/html/ht/.htgroup
Require group admins
</Files>
(Ungetestet, sollte aber funktionieren.)
Viele Grüße,
Christian
Hi,
Die einfachste Möglichkeit, wäre hier mit Satisfy Any zu arbeiten:
In der Files-Direktive, die die "speziellen" Dateien umfasst, einfach beide Gruppennamen anzugeben, sollte doch genauso "funzen".
MfG ChrisB
Hallo!
Die einfachste Möglichkeit, wäre hier mit Satisfy Any zu arbeiten:
In der Files-Direktive, die die "speziellen" Dateien umfasst, einfach beide Gruppennamen anzugeben, sollte doch genauso "funzen".
Ja, das funktioniert auch (hab's gerade getestet). Hätte ich aber nicht erwartet. Ich warte auf Apache 2.4, wo die ganze authz-Geschichte stark überarbeitet wurde.
Allerdings funktioniert's nur, wenn die Reihenfolge umgedreht wird. Das gilt übrigens auch für meine Satisfy-Variante, die geht out-of-the-box auch nicht.
Hier nochmal meine Satisfy-Variante, diesmal getestet:
<Files ~ "^sr-.*\.php$">
AuthType Basic
AuthName 'Administrations-Bereich'
AuthUserFile /var/www/localhost/htdocs/authtest/.htuser
AuthGroupFile /var/www/localhost/htdocs/authtest/.htgroup
Require group admins
</Files>
<Files ~ "^sr-(dvds|cds|spiele)\.php$">
AuthType Basic
AuthName 'privater Bereich'
AuthUserFile /var/www/localhost/htdocs/authtest/.htuser
AuthGroupFile /var/www/localhost/htdocs/authtest/.htgroup
Require group friends
Satisfy Any
Order Deny,Allow
Deny from all
</Files>
Hier Deine Require-Variante, auch getestet:
<Files ~ "^sr-.*\.php$">
AuthType Basic
AuthName 'Administrations-Bereich'
AuthUserFile /var/www/localhost/htdocs/authtest/.htuser
AuthGroupFile /var/www/localhost/htdocs/authtest/.htgroup
Require group admins
</Files>
<Files ~ "^sr-(dvds|cds|spiele)\.php$">
AuthType Basic
AuthName 'privater Bereich'
AuthUserFile /var/www/localhost/htdocs/authtest/.htuser
AuthGroupFile /var/www/localhost/htdocs/authtest/.htgroup
Require group admins friends
</Files>
Viele Grüße,
Christian