Apache2 LocationMatch 允许登录索引,但不允许其他任何索引?

Apache2 LocationMatch 允许登录索引,但不允许其他任何索引?

我想允许/myapp/myapp/禁止其他所有内容。我该如何配置?我尝试了以下方法:

<LocationMatch "^/myapp/.+$">
LDAP here
</LocationMatch>

我认为它不会命中/myapp/myapp/,但它似乎也捕获了这些 URL。

如果我做

<LocationMatch "^/myapp/specificsubdirectory/.*$">
LDAP here
</LocationMatch>

然后这就可以了,但我想阻止应用程序中的所有特定子目录。

答案1

DirectoryIndex 在 LocationMatch 之前应用,重写位置以目录索引文件(index.html、index.php 等)结尾。您的模式

^/myapp/.+$

匹配,因为它实际上适用于

/myapp/index.html

答案2

正则表达式错误。请尝试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

因此,一个可行的<LocationMatch>指令是:

<LocationMatch "^/myapp(|/)$">

相关内容