Apache/.htaccess: Zugriff verweigern mit Ausnahme eines bestimmten Verzeichnisses

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Apache/.htaccess: Zugriff verweigern mit Ausnahme eines bestimmten Verzeichnisses

    Ich möchte einen kompletten Webspace per .htaccess sperren, was ich so mache:

    Quellcode

    1. order deny,allow
    2. deny from all

    Nun möchte ich aber den Zugriff auf ein bestimmtes Unterverzeichnis zulassen. Dieses Verzeichnis heißt ".well-known".

    Wenn ich das Hauptverzeichnis per Passwort absichere, so kann ich mit folgendem Code erreichen, dass für das Unterverzeichnis ".well-known" keine Passwortabfrage kommt:

    Quellcode

    1. AuthUserFile /var/www/vhosts/website/.htpasswd
    2. AuthGroupFile /dev/null
    3. AuthName "Login"
    4. AuthType Basic
    5. require valid-user
    6. <Files .well-known>
    7. Satisfy Any
    8. allow from all
    9. </Files>

    Aber wie mache ich es, wenn ich keine Passwortabfrage möchte, sondern mit Ausnahme des genannten Verzeichnisses alles blocken möchte? Ich bin da nun schon seit ca. zwei Stunden dran, bisher hat nichts zum Erfolg geführt. Im Moment ist das mein Code, der aber auch fürs Unterverzeichnis zu einem 403-Fehler (Access Denied) führt:

    Quellcode

    1. order deny,allow
    2. deny from all
    3. <Files .well-known>
    4. Satisfy Any
    5. allow from all
    6. </Files>

    Ich habe es auch schon ohne das untere allow from all bzw. ohne Satisfy Any getestet. Ebenso habe ich Directory statt Files getestet.

    Hat jemand eine Idee?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    /var/www/vhosts/website/.htaccess:

    Quellcode

    1. order deny,allow
    2. deny from all


    /var/www/vhosts/website/.well-known/.htaccess:

    Quellcode

    1. Allow from all


    Sollte eigentlich funktionieren.
    Ggf. prüfen, ob noch irgendwo eine Regel existiert, die den Zugriff auf Dateien/Verzeichne verbietet, die mit einem Punkt anfangen.
    @Mokki Ist auf jeden Fall ein Workaround, nur mit sinnloser Passwortabfrage. ;)

    @3daycliff Werde ich testen, ist aber in meinen Augen nicht perfekt, weil ich den Zugriff gerne unabhängig von der Existenz des Unterordners erlauben möchte. Sprich, ich möchte gar nicht, dass der .well-known-Ordner ständig existiert, sondern der soll nach Möglichkeit nur kurzzeitig automatisiert angelegt werden.

    Es geht dabei übrigens um die Zertifikatsanforderung von Let's Encrypt.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Klappt leider auch nicht, erhalte nach wie vor bei beiden Verzeichnissen eine Forbidden-Fehlermeldung.

    Das automatische Anlegen des Verzeichnisses macht das Let's-Encrypt-Programm, da habe ich also keine Möglichkeit, auch eine .htaccess anlegen zu lassen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich hab das bei mir mit folgender Konfig gelöst:

    Quellcode

    1. Alias /.well-known/acme-challenge/ /usr/local/www/.well-known/acme-challenge/
    2. <Directory "/usr/local/www/.well-known/acme-challenge/">
    3. Require all granted
    4. </Directory>

    Ich finde .htaccess Dateien sollte man so gut es geht vermeiden.

    Quellcode

    1. # httpd.conf
    2. # ...
    3. # ...
    4. Include ${CONFIG_FOLDER}/httpd-acme.conf
    5. Include ${CONFIG_FOLDER}/vHosts/*.conf

    3daycliff schrieb:

    Wenn du alles auskommentierst hast du aber Zugriff, oder?

    Ja.

    3daycliff schrieb:

    In der .conf-Datei vom Apache steht auch ein

    Prüfe ich, aber dürfte dann das ganz oben im 1. Post mit der Passwortabfrage und "Files" klappen?

    EDIT:

    slice schrieb:

    Ich finde .htaccess Dateien sollte man so gut es geht vermeiden.

    Aber für so eine Kleinigkeit extra in der Apache-Konfiguration was ändern...
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Link Danke, aber exakt das wurde doch in Post #3 schon vorgeschlagen. Und das ist für mich eine eher unschöne Lösung, weil ich den Unterordner eigentlich nicht anlegen möchte (der wird automatisiert bei Bedarf angelegt).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Nach ewigem Rumprobieren habe ich es nun endlich geschafft. Der Tipp von @3daycliff war im Prinzip schon die Lösung, allerdings hatte ich eine Kleinigkeit übersehen.

    3daycliff schrieb:

    SetEnvIf Request_URI "/\.well-known/$" MyAllow

    Durch das /$ am Ende funktionierte der Zugriff ausschließlich auf example.com/.well-known/, nicht auf example.com/.well-known und auch nicht auf example.com/.well-known/xyz

    So geht's nun aber endlich:

    Quellcode

    1. SetEnvIf Request_URI "/\.well-known" MyAllow
    2. Order allow,deny
    3. Allow from env=MyAllow

    Danke für eure Hilfe!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum