web-dev-qa-db-fra.com

Apache - Comment refuser un répertoire mais autoriser un fichier dans ce répertoire

J'essaie de configurer mon fichier Apache .conf pour qu'il refuse la liste d'une certaine catégorie, mais je souhaite autoriser un fichier spécifique à l'intérieur de cette catégorie . Il semble que la règle Directory soit "plus forte" que la règle Files. les deux - je ne peux pas accéder à ce certain fichier.

C'est ce que j'essaye:

<Directory /var/www/denied_directory>
     order deny,allow
     Deny From All
</Directory>

<Files safefile.php>
    Order Allow,Deny
    Allow from All
</Files>
22
Maor Barazany

Cela fonctionne parfaitement s'il est configuré correctement:

   <Directory /var/www/denied_directory>
        Order allow,deny
        <Files test.php>
           Order deny,allow
        </Files>
   </Directory>
20
akond

Dans Apache 2.4, avec un test supplémentaire sur une variable d’environnement:

Voir aussi: Require Directive

<Directory "/wikis/foswiki">

    Require all denied

    # Allow access to toplevel files ending in .html (in particular index.html) only 
    # (comment out if you don't care for this)

    <Files ~ "\.html$">

       <RequireAll>
          Require all granted
          Require not env blockAccess
       </RequireAll>

    </Files>

</Directory>
8
David Tonhofer

placez votre directive files dans votre directive directory.

3
David Chan

Autoriser un fichier spécifique lorsque l'accès est restreint par un mot de passe HTTP. Attention, la protection par mot de passe est définie sur la base du système de fichiers et les fichiers autorisés spécifiques sont définis par URI. Mis à jour pour Apache 2.4.

<Directory /path/to/directory/>
    AuthName SecureArea
    AuthType Basic
    AuthUserFile /path/to/passwd-file
    Require user my-user

    SetEnvIf Request_URI "path/to/uri-allowed-1.php" allowedURL
    SetEnvIf Request_URI "path/to/uri-allowed-2.php" allowedURL
    Require env allowedURL
</Directory>
0
David