我想将访问完整网站 (apache 2.4) 的权限限制为某些 IP。最重要的是,我想通过用户身份验证限制对某些子文件夹的访问。用户身份验证不起作用。这是我得到的:
在 vhost 配置中我有
<Location />
# Localhost
Require ip 127.0.0.1i
# some other IP
Require ip 1.2.3.4
<Location>
现在我希望子文件夹/secure/需要有效的用户登录
<webroot>/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
内)并且不关心可能的额外限制。
最佳答案
如果您希望阻止任何 IP,但仅阻止列表中的 IP,并提供提示允许的 IP 的基本登录,您可以执行以下操作(在您的 .htaccess 中):
Require all denied
<RequireAll>
Require valid-user
Require ip 100.04.04.04
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
并且对于多个 IP,类似下面的内容应该可以工作:
Require all denied
<RequireAll>
<RequireAny>
Require ip 78.53.160.0/19
Require ip 80.171.1.0/24
Require ip 80.171.2.0/23
Require ip 80.171.4.0/22
Require ip 80.171.8.0/21
Require ip 80.171.16.0/20
Require ip 80.171.32.0/19
Require ip 80.171.64.0/18
</RequireAny>
<RequireAll>
Require valid-user
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
</RequireAll>
关于apache - 在 apache 2.4 中结合子文件夹的 ip 和用户身份验证限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043266/