Apache - Как запретить каталог, но разрешить один файл в этом каталоге - PullRequest
23 голосов
/ 05 июня 2011

Я пытаюсь настроить мой файл Apache .conf, чтобы запретить перечисление из определенной категории, но я хочу разрешить определенный файл в этой категории.Кажется, что правило Каталога «сильнее», чем правило «Файлы», поэтому при использовании обоих - я не могу получить доступ к этому определенному файлу.

Вот что я пытаюсь:

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

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

Ответы [ 5 ]

20 голосов
/ 05 июня 2011

Отлично работает, если настроен правильно:

   <Directory /var/www/denied_directory>
        Order allow,deny
        <Files test.php>
           Order deny,allow
        </Files>
   </Directory>
9 голосов
/ 20 июля 2014

В Apache 2.4 с дополнительным тестом для переменной среды для правильной меры:

См. Также: Требуется директива

<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>
3 голосов
/ 05 июня 2011

поместите директиву files в директиву вашего каталога.

0 голосов
/ 08 марта 2019

В ответе @ acond отсутствует строка. Я думаю, что нужно Allow:

<Directory /var/www/denied_directory>
     order deny,allow
     Deny from All
    <Files safefile.php>
        order deny,allow
        Allow from All
    </Files>

Поскольку в каждой директиве есть только одно правило, я подозреваю, что строки order могут быть неактуальными. Хотя, возможно, требуется самое внешнее, потому что существует более одного вложенного правила. (Я новичок в конфигурации Apache)

0 голосов
/ 15 января 2019

Чтобы разрешить определенный файл, когда доступ ограничен паролем HTTP. Будьте осторожны, защита паролем определяется на основе файловой системы, а определенные разрешенные файлы определяются URI. Обновлено для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...