尝试在 .htaccess 文件中使用它AuthName
来覆盖顶级配置设置不起作用 - 服务器仍然发送WWW-Authenticate:"Basic realm="...""
配置中设置的值。尽管已AllowOverride AuthConfig
启用,但仍然如此。我做错了什么,还是我发现了一个错误?
httpd.conf:
<Directory "/www">
AllowOverride AuthConfig
</Directory>
<Location />
AuthName "config"
</Location>
/www/.htaccess
AuthType Basic
AuthName "htaccess"
AuthUserFile /dev/null
Require user nobody
PS:上述示例的实际版本具有通用的顶级“单点登录”身份验证设置,然后只需在 htaccess 文件中放入一行“Require valid-user”等。冲突发生在使用虚假身份验证领域来实现基本身份验证注销的子目录中。
答案1
正如 ezra-s 在评论中所建议的那样,您需要将AuthName
指令移出容器<Location>
并设置在<Directory>
容器中。
<Location>
容器在请求中被处理得更晚,在<Directory>
容器和.htaccess
文件之后。因此这将覆盖您的.htaccess
文件。
此外,在处理文件系统部分的身份验证时不应使用<Location>
容器,因为如果从多个 URL 访问资源,则可以规避这些容器。