DirectoryIndex é aplicado antes de LocationMatch, reescrevendo o local para terminar com o arquivo de índice de diretório (index.html, index.php e assim por diante). Seu padrão
^/myapp/.+$
corresponde, porque é aplicado a
/myapp/index.html
Eu quero permitir /myapp e /myapp/ , mas não permitir todo o resto. Como eu configuro isso? Eu tentei isso:
<LocationMatch "^/myapp/.+$">
LDAP here
</LocationMatch>
O que eu diria que NÃO atingiria /myapp ou /myapp/ , mas parece que também captura esses URLs.
Se eu fizer
<LocationMatch "^/myapp/specificsubdirectory/.*$">
LDAP here
</LocationMatch>
Então isso funciona, mas eu quero bloquear todos os subdiretórios específicos do aplicativo.
DirectoryIndex é aplicado antes de LocationMatch, reescrevendo o local para terminar com o arquivo de índice de diretório (index.html, index.php e assim por diante). Seu padrão
^/myapp/.+$
corresponde, porque é aplicado a
/myapp/index.html
A expressão regular está errada. Experimente um pcretest(1) :
$ pcretest
PCRE version 8.37 2015-04-28
re> /^\/myapp\/.+$/
data> /myapp
No match
data> /myapp/
No match
data>
re> /^\/myapp(|\/)$/
data> /myapp
0: /myapp
1:
data> /myapp/
0: /myapp/
1: /
data> /myapp/foo
No match
Portanto, uma diretiva <LocationMatch> em funcionamento seria:
<LocationMatch "^/myapp(|/)$">
Tags regex apache-2.4