我希望限制对完整网站(Apache 2.4)的访问仅限于某些IP地址。除此之外,我还想通过用户身份验证限制对某些子文件夹的访问。但是,用户身份验证无法正常工作。以下是我的配置:
在虚拟主机配置中,我有以下设置:
<Location />
# Localhost
Require ip 127.0.0.1i
# some other IP
Require ip 1.2.3.4
<Location>
现在我想让子文件夹/secure/要求有效的用户登录。 /secure/.htaccess 的外观如下:
<RequireAll>
Require all granted
Require user user1 user2 user3
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /securePath/userAuth
</RequireAll>
我仍然可以在没有用户身份验证的情况下从IP 1.2.3.4访问/secure。感觉Apache会匹配IP Require ip 1.2.3.4
指令(在隐式RequireAny
内部),并且不会关心可能存在的进一步限制。
mod_access_compat
,你可以使用旧的Apache语法使它按预期工作。链接中的代码有IfModule
检查,因此当模块不存在时,它将恢复到较新的语法和忽略身份验证的行为。不幸的是,我还没有找到最终的答案。 - Shikkediel