Apache-Authentifizierung: Ermöglichen Sie den öffentlichen Zugriff auf ein Unterverzeichnis

13

Dies ist wahrscheinlich ein einfaches Problem, aber ich kann die Lösung nicht in der Dokumentation finden.

Ich möchte meine Website mit einem Passwort schützen, indem ich die BASIC-Authentifizierung verwende. Ich möchte jedoch, dass ein Unterverzeichnis nicht geschützt wird:

http://mysite.com/ -> BASIC protected
http://mysite.com/somedir -> BASIC protected
http://mysite.com/someotherdir -> BASIC protected
http://mysite.com/public -> not protected

Ich habe kein Problem damit, die gesamte Site zu schützen, aber ich weiß nicht, wie ich den Schutz eines Verzeichnisses aufheben kann. Die Site wird auf einem gemeinsam genutzten Host gehostet, sodass ich nur Zugriff auf .htaccess-Dateien habe, um die Konfiguration durchzuführen.

Gibt es eine Anweisung, um die Authentifizierung zu negieren?

Danke für die Hilfe ...

Guillaume
quelle
Dies scheint die richtigste Lösung zu sein: stackoverflow.com/questions/2641646/…
BryanK

Antworten:

10

Sollte kein Problem mit .htaccess sein, je nachdem, was der Host erlaubt hat.

Sie können versuchen, eine .htaccess-Datei in den Unterordner zu kopieren, wobei die Überschreibungen für die Verzeichnisse aktiviert sein müssen, in denen sie gespeichert sind.

 Allow From All
 Satisfy Any
Zylindrisch
quelle
1
Die geheime Sauce hier, IIRC, besteht darin, die .htaccess-Datei im Stammverzeichnis Ihrer Site abzulegen, aber einen Eintrag in dieser .htaccess-Datei zu haben, wie es bei Cylindric der Fall ist.
Paul Lathrop
Und vergessen Sie nicht, eine AllowOverride hinzuzufügen (oder sicherzustellen, dass sie vorhanden ist), damit die .htaccess-Datei verwendet wird.
TCampbell
1
@Paul - Ich habe meine Antwort gelöscht, aber die Antwort von AFAICR Cylindric ist derzeit falsch? Eine .htaccess-Datei in einem Unterverzeichnis kann eine höhere nicht überschreiben. Die .htaccess-Datei im übergeordneten Verzeichnis kann jedoch auch Steuerelemente für Unterverzeichnisse enthalten (oder entfernen).
Alnitak
Ich habe versucht, sowohl eine <Directory /> -Direktive in den Stammordner als auch in den Ordner zu stellen, in dem ich öffentlich sein möchte, aber in beiden Fällen erhalte ich ein HTTP 500. Irgendwelche anderen Ideen?
Guillaume
1
Sie können <Verzeichnis> in .htaccess nicht verwenden, obwohl Sie <Dateien> und <Speicherort> verwenden können
Alnitak
7

OK, für einen Pfad server.com/private/public:

server.com/private/.htaccess

AuthType Basic
AuthName "Private, keep out."
Require...

server.com/private/public/.htaccess

Allow From All
Satisfy Any

Der Schlüssel hier ist 'Satisfy Any', das die Anforderungen von oben zusammen in den Vordergrund stellt. "Alle erfüllen" ist die Standardeinstellung.

CK.
quelle
Danke für die Erklärung von 'Satisfy Any' 👍
Mario
1

Ich glaube, das könnte es tun:

# put the global auth stuff here
...

# put the override here
<Location /public>
Allow from All
Satisfy Any
</Location>
Alnitak
quelle
Es ist niemals eine gute Idee, <Location> s für die Zugriffskontrolle zu verwenden. Sie steuert den Zugriff nur über einen Namen und nicht über die Ressource selbst. Auf alle Objekte, die Zugriff über einen anderen Namen (z. B. Alias) gewähren, wird daher keine Zugriffssteuerung angewendet.
CK.
1
@CK Eigentlich müssen Sie Location verwenden, wenn es sich bei dem fraglichen Ort nicht um ein physisches Verzeichnis handelt, sondern nur um ein "virtuelles" Verzeichnis, das durch etwas wie mod_rewrite verschleiert wurde.
Natalie Adams
0

Ich habe es geschafft, dies zu lösen:

<Directory "/path/to/maindirectory">
[... auth stuff ... ]
</Directory>

<Directory "/path/to/mysubdirectory">
 Allow from All
 Satisfy Any
</Directory>

Verwenden Sie keine Speicherorte, da bei diesen die Groß- und Kleinschreibung beachtet wird und der tatsächliche Ordnerzugriff nicht berücksichtigt wird, sondern nur die URL.

Also zum Beispiel, wenn ich schreibe

http:/mywebsite/STUFF

oder

http://mywebsite/stuff

oder

http://mywebsite/StUfF

Dies ist bei der Standortkontrolle anders, auch wenn das aufgerufene physische Verzeichnis dasselbe ist !!!

Kurz gesagt, Sie überprüfen den Zugriff auf das Verzeichnis "Zeug" und ich kann es mit anderen Groß- / Kleinschreibung schriftlich erhalten.

Die Verwendung der .htaccess-Datei in einem einzelnen Verzeichnis mit Standortsteuerung für andere hat für mich ebenfalls nicht funktioniert.

Ich hoffe es hilft.

xela92
quelle