Alex: htaccess - Ordner mit bestimmten Präfix schützen

Hallo,

ich würde gerne auf meinem Server alle Ordner mit einem bestimmten Präfix "pvt_" schützen.

Um nicht jeden Ordner einzeln zu erfassen, dachte ich, dass es ja vlt. auch möglich ist, diese Ordner in einer Codezeile anzusprechen.

Wie stelle ich das an, wenn es möglich ist?

Gruß
Alex

  1. Hi,

    ich würde gerne auf meinem Server alle Ordner mit einem bestimmten Präfix "pvt_" schützen.

    Um nicht jeden Ordner einzeln zu erfassen, dachte ich, dass es ja vlt. auch möglich ist, diese Ordner in einer Codezeile anzusprechen.

    Wie stelle ich das an, wenn es möglich ist?

    Wenn du vollen Zugriff auf die Server-Konfiguration hast, sollte sich das erreichen lassen, indem du die Require- in einer LocationMatch-Direktive unterbringst. (Letztere lässt sich nicht in .htaccess nutzen. FilesMatch wäre zwar dort einsetzbar, aber ich glaube das schaut wirklich nur auf das letzte Path-Segement aka „Dateiname“, und wird sich zum matchen von Verzeichnissen nicht nutzen lassen.)

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
  2. Wie stelle ich das an, wenn es möglich ist?

    Das hier gänge (mit mod_alias, meist aktiviert) in der .htaccess:

      
    [link:http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch@title=RedirectMatch] ^(.*/pvt_.*/.*$) /404.php?orig=$1  
    # auswertbar oder die Leichtlast-Variante:  
    RedirectMatch ^.*/pvt_.*/.*$ /404.html  
    
    

    Das wäre aber nur ein Notbehelf.

    Mit mod_rewrite (längst nicht immer aktiviert) geht auch

      
    RewriteEngine On  
    [link:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule@title=RewriteRule] ^(.*/pvt_.*/.*)$ /404.php?orig=$1  
    # auswertbar oder die Leichtlast-Variante:  
    RewriteRule .*/pvt_.*/ /404.html  
    
    

    Natürlich braucht beides die Erlaubnis, die Serverkonfiguration zu überschreiben. Ich habe in beiden Varianten auf die Prüfung des Moduls verzichtet, denn wenn das Modul nicht installiert und konfiguriert ist liefert der Server dann nur den 500er Fehler - was aber besser ist als die 'geheimen' Daten zu verbreiten.

    <?php
    header("HTTP/1.0 404 Not Found");
    $orig='';
    if ( isset($_GET['orig']) ) { $orig='/'.$_GET['orig']; }
    echo ('<html><h1>Fehler 404</h1><p>Die Datei "' . htmlentities($orig) .'" ist nicht vorhanden.</p></html>' );

    Jörg Reinholz

    1. Hallo Jörg,

      soweit ich das überschauen kann, zielen deine Lösungen darauf ab, dass ich entsprechende Anfragen auf die Verzeichnisse einfach auf eine 404-Fehlerseite weiterleite.

      Da habe ich mich wohl nicht eindeutig genug in der Fragestellung ausgedrückt. Ich will das entsprechende Verzeichnis mit einem Passwortschutz über htaccess versehen. Mit der von dir genannten Lösung, könnte ich ja (vermutlich) selbst auch nicht mehr über den Webbrowser auf die Dateien zugreifen, was jedoch gewünscht ist.

      Es handelt sich überwiegend um Testseiten, welche ich der Allgemeinheit (noch) nicht zur Verfügung stellen will, aber die über das Web sehr wohl erreichbar sein sollen (für Tests auf unterschiedlichen Systemen usw.).

      Gruß
      Alex

      1. Da habe ich mich wohl nicht eindeutig genug in der Fragestellung ausgedrückt. Ich will das entsprechende Verzeichnis mit einem Passwortschutz über htaccess versehen. Mit der von dir genannten Lösung, könnte ich ja (vermutlich) selbst auch nicht mehr über den Webbrowser auf die Dateien zugreifen, was jedoch gewünscht ist.

        Tja. "Schützen" kann viel heißen... da sieht man, was rauskommt wenn Fragen ungenau formuliert sind. Irgendwer (hier: ich) reißt sich den Arsch auf. Für's Archiv.

        Bei Deinem Ansinnen hilft wohl nur LocationMatch, wie von Chris vorgeschlagen. <http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz@title=Den Passwortschutz dann wie üblich> umd innerhalb von <LocationMatch "/prv_.*"  > und <LocationMatch> und betreffs der Pfadangaben zur Passwort-Datei unbedingt Angaben, die absolut zum Dateisystem-Root sind.

        Du brauchst dann halt Zugriff auf die Serverkonfiguration.

        Jörg Reinholz

      2. Da habe ich mich wohl nicht eindeutig genug in der Fragestellung ausgedrückt. Ich will das entsprechende Verzeichnis mit einem Passwortschutz über htaccess versehen. Mit der von dir genannten Lösung, könnte ich ja (vermutlich) selbst auch nicht mehr über den Webbrowser auf die Dateien zugreifen, was jedoch gewünscht ist.

        Es handelt sich überwiegend um Testseiten, welche ich der Allgemeinheit (noch) nicht zur Verfügung stellen will, aber die über das Web sehr wohl erreichbar sein sollen (für Tests auf unterschiedlichen Systemen usw.).

        Gruß
        Alex

        Ich benutze keinen Indianer. In nginx würde ich es so umsetzen.

        Um es separat zu halten, einen Server-Block in default mit anderem Port anlegen. Aufruf im Browser mit xxx.xxx.xxx.xxx:8777/test/

        server {
            listen 8777;

        root /test/;  
          
        index  
        index.html;  
        

        location /test/ {
               alias /www/AAA/test/;
               auth_basic "Hier Name und Passwort eingeben";
               auth_basic_user_file /xxx/conf/htpasswd;
               }
        }