# [.htaccess] Verzeichnis sperren, jedoch einzelnes Unterverzeichnis erlauben



## Frezl (28. März 2012)

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:


```
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:


```
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


----------



## Alice (28. März 2012)

Ich würde es erst einmal so probieren:

```
<Directory /root/www/htdocs/xxx/foo>
Allow from all
</Directory>
```


----------



## Frezl (28. März 2012)

Hey Alice,

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

Viele Grüße,
Frezl


----------



## Alice (28. März 2012)

Hallo. 

Dann mach es folgendermaßen.

```
Order Deny,Allow
Deny from all
```

Im Unterverzeichnis:

```
Satisfy Any
Order Deny,Allow
Allow from all
```

Das muss funktionieren.


----------



## Frezl (28. März 2012)

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


----------



## Alice (29. März 2012)

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:

```
<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
   echo $_SERVER['DOCUMENT_ROOT'];
?>
```


----------

