Mithilfe einer .htaccess-Datei den Zugriff auf ein Verzeichnis verbieten

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Ich möchte den Zugriff auf ein Verzeichnis mithilfe einer .htaccess-Datei verbieten.
Das gestaltet sich allerdings schwieriger als ich angenommen hatte.
Auf jeder dritten Seite zum Thema Webentwicklung findet man zwar ein Tutorial, mit dem man ein Passwortschutz für ein Verzeichnis einrichten kann, allerdings gibt es fast nirgends Informationen, wie man einfach den Zugriff auf ein Verzeichnis komplett für jeden verbieten kann - ohne den Umweg über eine Passwortabfrage. Es soll einfach ein DocumentError 403 erzeugt werden - nichts weiter. Keine Passwortabfrage, kein DocumentError 401.

Nach meinen Recherchen bin ich nun bei folgendem Ergebnis angelangt und komme nun nicht mehr weiter.

Code:
Order deny,allow
Deny from all
Allow from [color=red]???[/color]

Und nun? from all soll verboten werden - und von nichts soll erlaubt werden.
Gibt es für nichts auch ein Schlüsselwort? Also praktisch ein Gegenteil für all?
Oder verbietet man den Zugriff auf Verzeichnisse ganz anders?

Außerdem: Wie streng ist die Syntax von .htaccess-Dateien? Wird Groß- und Kleinschreibung berücksichtigt? Kann ich beispielsweise order anstatt Order schreiben? Oder wie ist das mit der Zeichensetzung? Kann ich deny, allow schreiben, oder muss ich deny,allow (ohne Leerzeichen nach dem Komma) schreiben?

Und noch was: Wie kann ich einzelne Dateien in einem Verzeichnis schützen?

Danke für alle Antworten! :)
 
Um alle Zugriffe zu blocken, reicht
Code:
Order Allow,Deny
da auf diese Weise alle Zugriffe geblockt werden, die nicht explizit durch eine (optionale) Allow-Direktive erlaubt sind.

Direktiven sind case-insensitve, d.h. Du kannst sowohl order als auch Order schreiben, bei den Attributen hingegen hängt es von der Direktive ab, da sie von den jeweiligen Modulen interpretiert werden und es keine Vorgabe diesbzgl. gibt.

Um einzelne Dateien zu schützen, gibt es die <FilesMatch>-Direktive, sie erwartet als Argument einen regulären Ausdruck, der auf die Dateinamen angewandt wird.

greetings, Keita
 
Alles klar. Vielen Dank!

Eine Frage noch: Ist es egal, ob ich Order allow,deny oder Order deny,allow schreibe? Hm... wohl kaum. Aber den Unterschied checke ich auch nicht ganz...

Und: sind die allow- und deny-Direktiven immer optional? D.h. kann ich bspw. auch nur die deny-Direktive benutzen? Oder gibt es Formen, in denen allow und deny nur zusammen verkommen dürfen?
 
Wenn's egal wäre, gäb's ja nicht die Alternativen :D

Allow,Deny:
Der Zugriff wird standardmäßig geblockt, nur Zugriffe, die durch die optionale Allow-Direktive erlaubt sind, werden zugelassen.
Werden Zugriffe über die optionale Deny-Direktive geblockt, werden diese auch dann geblockt, wenn sie durch die Allow-Direktive erlaubt wären.

Deny,Allow:
Der Zugriff wird standardmäßig erlaubt, nur Zugriffe, die durch die optionale Deny-Direktive geblockt werden, werden nicht zugelassen.
Werden Zugriffe über die optionale Allow-Direktive zugelassen, werden diese auch dann zugelassen, wenn sie durch die Deny-Direktive nicht erlaubt wären.

Die Reihenfolge des Arguments für die Order-Direktive gibt also an, in welcher Reihenfolge die optionalen Deny- und Allow-Direktiven ausgewertet werden, was ersteres zuläßt, kann durch letzteres aufgehoben werden und vice versa.

greetings, Keita
 
ah danke, das is doch ma verständlich erklärt :)

und eine letzte sache noch zu diesem thema: in jedem verzeichnis muss eine extra .htaccess-Datei erstellt werden, oder? Es ist nicht möglich, in einer zentralen .htaccess-Datei alle verzeichnisse anzugeben, auf die das zutreffen soll (die sperre). lieg ich da richtig?
 
Wenn du Zugriffe auf Verzeichnisse (und ihre Inhalte) blocken willst, mußt du für jedes Verzeichnis eine .htaccess erstellen. Willst du hingegen Zugriffe auf Dateien blocken, kannst du es auch zentral in einer .htaccess-Datei erledigen, indem du mittels der <FilesMatch>-Direktive eine Regel erstellst, diese ist für alle entsprechenden Dateien in allen Unterverzeichnissen gültig.

greetings, Keita
 
Zurück
Oben