Há uma resposta no StackOverflow que deve responder a essa pergunta. Acredito que há uma Order
ausente na diretiva Files
aninhada?
Eu herdei um aplicativo da web mal projetado, que tem um determinado arquivo que precisa ser publicamente acessível, mas esse arquivo está dentro de um diretório que não deveria.
Em outras palavras, eu preciso de uma maneira de bloquear todos os arquivos e subdiretórios dentro de um diretório, mas substituí-lo por um único arquivo.
Estou tentando isso:
# No one needs to access this directly
<Directory /var/www/DangerousDirectory/>
Order Deny,allow
Deny from all
# But this file is OK:
<Files /var/www/DangerousDirectory/SafeFile.html>
Allow from all
</Files>
</Directory>
Mas não está funcionando - apenas bloqueia tudo, incluindo o arquivo que eu quero permitir. Alguma sugestão?
Há uma resposta no StackOverflow que deve responder a essa pergunta. Acredito que há uma Order
ausente na diretiva Files
aninhada?
# No one needs to access this directly
<Directory /var/www/DangerousDirectory/>
Order Deny,allow
Deny from all
</Directory>
# But this file is OK:
<Files /var/www/DangerousDirectory/SafeFile.html>
Order Deny,Allow
Allow from all
</Files>
E se esse diretório for protegido por senha, adicione Satisfy any
também.
Uma resposta muito tardia, mas talvez ainda uma resposta.
A tag está no escopo do diretório e não deve ter o caminho completo. Por isso, deve ler:
<Directory "/var/www/DangerousDirectory">
Order Deny,allow
Deny from all
# But this file is OK:
<Files "SafeFile.html">
Allow from all
</Files>
</Directory>
Esteja ciente de que isso permitiria qualquer arquivo chamado SafeFile.html nessa árvore de diretórios.
Tags directory apache-2.2 deny