Ответ 1
Он отлично работает, если он настроен правильно:
<Directory /var/www/denied_directory>
Order allow,deny
<Files test.php>
Order deny,allow
</Files>
</Directory>
Я пытаюсь настроить файл Apache.conf, чтобы запретить листинг из определенной категории, но я хочу разрешить конкретный файл внутри этой категории. Похоже, что правило каталога "сильнее", чем правило "Файлы", поэтому при использовании обоих - я не могу получить доступ к определенному файлу.
Вот что я пытаюсь:
<Directory /var/www/denied_directory>
order deny,allow
Deny From All
</Directory>
<Files safefile.php>
Order Allow,Deny
Allow from All
</Files>
Он отлично работает, если он настроен правильно:
<Directory /var/www/denied_directory>
Order allow,deny
<Files test.php>
Order deny,allow
</Files>
</Directory>
В 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>
поместите директиву ваших файлов в директиву вашего каталога.
Чтобы разрешить определенный файл, когда доступ ограничен паролем 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>