Eu tento proteger o acesso a um subdiretório por http auth usando a configuração do arquivo .htaccess.
Este é o código de trabalho completo do apache 2.4 no meu caso.
# Conditionally set environment variable BACKEND_PROTECTION (version for apache 2.4)
<If "%{HTTP_HOST} == 'www.somedomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
</If>
<If "%{HTTP_HOST} == 'www.someotherdomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
</If>
<RequireAny>
<RequireAll>
Require not env BACKEND_PROTECTION
Require all granted
</RequireAll>
<RequireAll>
AuthType Basic
AuthName "Protected URI"
AuthUserFile /var/www/config/.htpasswd
Require valid-user
</RequireAll>
</RequireAny>
Agora eu preciso excluir adicionalmente um subdiretório desse diretório da autenticação, então é isso que eu tentei.
<If "%{HTTP_HOST} == 'www.somedomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
</If>
<If "%{HTTP_HOST} == 'www.someotherdomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
</If>
# disable protection for backend files loaded in frontend
SetEnvIf REQUEST_URI "^/typo3/sysext/" !BACKEND_PROTECTION
Mas isso não funciona, depois desse código, o seguinte <RequireAny>
block from above aciona a autenticação http como se BACKEND_PROTECTION ainda estivesse definido.
Mas se eu colocar a negação dentro de <If></If>
, isso funciona como esperado.
<If "%{HTTP_HOST} == 'www.somedomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
SetEnvIf REQUEST_URI "^/typo3/sysext/" !BACKEND_PROTECTION
</If>
<If "%{HTTP_HOST} == 'www.someotherdomain.de'">
SetEnvIf REQUEST_URI "^/typo3/" BACKEND_PROTECTION
SetEnvIf REQUEST_URI "^/typo3/sysext/" !BACKEND_PROTECTION
</If>
Por que é assim? O que a seguinte declaração tirada da Documentação If significa exatamente?
Description: Contains directives that apply only if a condition is satisfied by a request at runtime
O outro código dentro de .htacces não é processado durante o mesmo tempo de execução? Ou apenas em um estágio anterior desse tempo de execução durante algum tipo de etapa de pré-compilação?
Tags apache-2.4 conditional