[.htaccess] Verzeichnis sperren, jedoch einzelnes Unterverzeichnis erlauben

Frezl

Erfahrenes Mitglied
Hallo allerseits,

wie der Thread-Titel schon andeutet, möchte ich mit einer .htaccess-Datei ein Verzeichnis sperren, jedoch auf ein einzelnes Unterverzeichnis den Zugriff erlauben. Die Verzeichnissstruktur sieht so aus:

Code:
anyfolder
|
+- foo
+- bar
+- usw
+- usf
+- .htaccess

Es sollen alle Verzeichnisse gesperrt sei, außer dem Verzeichnis "foo". Ich habe es mit folgendem Code in der .htaccess versucht:

Code:
Order Deny,Allow
Deny from all

<Directory /foo>
Allow from all
</Directory>

Leider war ich damit erfolglos. Beim Zugriff auf "anyfolder" spuckt der Server nen Fehler 500 aus :(

Hier im Forum habe ich leider auch keine Lösung gefunden, weil hier alle scharf auf nen Zugriffsschutz mit AUthentifizierung zu sein scheinen. Genau das will ich aber nicht. Es soll einfach nur "Forbidden" gemeldet werden.

Weiß jemand Rat?

Viele Grüße,
Frezl
 
Ich würde es erst einmal so probieren:
PHP:
<Directory /root/www/htdocs/xxx/foo>
Allow from all
</Directory>
 
Hey Alice,

vielen Dank für deine Antwort. Leider war das nicht die Lösung des Problems

Viele Grüße,
Frezl
 
Hallo. :)

Dann mach es folgendermaßen.
PHP:
Order Deny,Allow
Deny from all

Im Unterverzeichnis:
PHP:
Satisfy Any
Order Deny,Allow
Allow from all

Das muss funktionieren.
 
Zuletzt bearbeitet:
Nice :) So funktioniert's. Vielen Dank! Ich hätte es allerdings gerne trotzdem über eine einzige .htaccess in "anyfolder" gelöst, weil evtl. noch andere Unterordner dazu kommen werden, die dann wieder eigene .htaccess-Dateien bräuchten.

Kannst du mir bitte noch erklären, was "Satisfy Any" bewirkt?

Viele Grüße,
Frezl
 
Eigentlich hätte mein Code aus dem 2. Post auch funktionieren sollen aber ist doch egal oder?
Dann machst du halt in jedes Verzeichnis eine extra htacces-Datei rein. Das kann je nach Anwendung auch ganz Hilfreich sein.

Da du keine Passwörter oder IP-Adresse verwendest, könntest du eigentlich "Satisfy Any" löschen.

Probieren geht über studieren. ;)

Edit:

Ich gehe davon aus das du den Code aus meinem ersten Beitrag (Post Nr. 2) richtig eingebaut hast aber ich erwähne es trotzdem einen möglichen Fehler.

Die htacces-Datei muss so aussehen:
PHP:
<Directory /document/root/foo>
Allow from all
</Directory> 

Order Deny,Allow
Deny from all

Falls du den absoluten Pfad nicht kennst, erstell einfach eine PHP-Datei mit folgendem Inhalt:
PHP:
<?php
   echo $_SERVER['DOCUMENT_ROOT'];
?>
 
Zurück