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


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

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.


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>

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.