Apache - 允许在未经身份验证的情况下访问全局别名目录

Zul*_*kis 5 apache-2.4 apache2

我有一个虚拟主机,它配置了一些访问限制,如下所示:

<Location "/">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/www/domain/htdocs/.htpasswd
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

除此之外,我还有以下conf文件:

Alias /.well-known/acme-challenge/ "/var/www/letsencrypt/"

<Location /.well-known/acme-challenge/>
    # Security Options
    Options None
    AllowOverride None
    ForceType text/plain
    RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"

    # Do not redirect to https or perform other rewrites
    RewriteEngine off

</Location>
Run Code Online (Sandbox Code Playgroud)

我需要/.well-known/acme-challenge/无需授权即可访问。

我已经尝试Require all granted向我的conf文件添加不同的变体,但无济于事。

如何让/.well-known/acme-challenge/所有虚拟主机无需身份验证即可访问?(我不想修改任何虚拟主机,这个虚拟主机只是一个例子)。

Sve*_*ven 1

在 Apache 2.4 中,您可以将Require expr语句添加到第一个位置块并评估请求 URI,如下所示:

Require expr %{REQUEST_URI} =~ m#^/.well-known/acme-challenge/.*#
Run Code Online (Sandbox Code Playgroud)

或类似的东西(语法未实际测试)。奇怪的m#语法是正则表达式能够/在字符串中使用的另一种形式。

expr文档: https: //httpd.apache.org/docs/2.4/expr.html