当 Apache 2.4 中的根位置受 htauth 保护时,如何授予对子位置的访问权限

当 Apache 2.4 中的根位置受 htauth 保护时,如何授予对子位置的访问权限

我有以下站点配置

<Location />
    AuthUserFile /path/.htpasswd
    AuthName "Restricted Area"
    AuthType Basic
    require valid-user
</Location>

限制对所有位置的访问。现在我想排除media/

<Location /media>
    Require all granted
</Location>

以及upload/另一个目录中的

Alias /upload/files/ /another/path/upload/files/
<Directory "/another/path/upload/files/">
    Options None
    AllowOverride None
    ForceType text/plain

    Require all granted
</Directory>

不幸的是,它仍然提示我进行身份验证。

答案1

您可以通过以下方式添加例外情况:

<Directory /media>
         Options none
         AllowOverride none
         Require all granted
</Directory>

应用配置后,必须重新启动 apache 服务。

答案2

由于 Location /media 位于 Location / 之后,因此它继承了根 AuthType。您应该能够否决它:

<Location /media>
  AuthType None
  Require all granted
</Location>

答案3

我找到了一种方法来实现这一点

<Location />
    AuthUserFile /path/.htpasswd
    AuthName "Restricted Area"
    AuthType Basic
    Require expr %{REQUEST_URI} =~ m#^/media#
    Require expr %{REQUEST_URI} =~ m#^/upload/files/#
    Require valid-user
</Location>

可能还有其他选择。

相关内容