小编Jef*_*eff的帖子

apache locationmatch 负正则表达式

我正在尝试通过 Apache 公开一个位置。通常,我的 vhost 中有这个块,上面写着

<Location />
    AuthType Basic
    AuthUserFile /web/.htpasswd
    AuthName "Test Site"
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

这工作得很好 - 提供的一切都需要一个有效的用户。现在我想公开一个不需要身份验证的服务,所以我正在寻找一种方法来使除 /services 之外的所有位置都需要身份验证。我一直在玩 LocationMatch,但我并不完全清楚它在做什么。

<LocationMatch ^/(?!services)[^.]*$>
AuthType Basic
...
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

允许 /services 及其下面的所有内容跳过 LocationMatch,但它具有允许 example.com/.somefile 绕过 LocationMatch 块的副作用。

此外,当我尝试

<LocationMatch ^/(?!services)>
AuthType Basic
...
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

一切(包括 /services)都由 LocationMatch 匹配。

如果有人能告诉我 [^.]* 类做了什么而第二个测试没有,以及如何在保持所有其他路径经过身份验证的同时只公开 /services ,我将不胜感激。

regex apache-2.2

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

apache-2.2 ×1

regex ×1