除localhost之外的Apache身份验证
问题描述:
我需要在公共使用网站时应用HTTP身份验证,但我并未将其应用于本地主机。这是我认为应该工作的.htaccess
。但它不起作用 - 它仍然要求我输入用户名/密码。
我在做什么错?除localhost之外的Apache身份验证
SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
AuthType Basic
AuthName "ADMIN"
AuthUserFile /path/to/.htpasswd
Require valid-user
</IfDefine>
mod_setenvif
当然是启用的。
答
您需要查看order
和satisfy
关键字。下面是我的网站上的工作示例。首先我们告诉我们我们接受IP或USER。然后我们定义htpasswd文件路径,并且我们接受来自该文件的任何有效用户。最后,我们定义哪些客户端IP地址可以在没有认证的情况下访问我们的网络(我们拒绝所有其他IP,因此它们必须通过htpasswd进行认证)。
# permit by USER || IP Satisfy any # USER AuthUserFile /var/www/munin/.htpasswd AuthGroupFile /dev/null AuthName "Password Protected Area" AuthType Basic require valid-user # IP order deny,allow deny from all allow from 11.22.33.
答
在的Apache 2.4,allow
,deny
和satisfy
不再使用,IP地址限制也与require
现在做:
AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
Require ip 127.0.0.1
Require valid-user
如果有任何 “要求” 指令得到满足,该请求被允许。如果您想同时需要,请将它们分组在<RequireAll>
区块中。
对于限制本地访问您可以使用特殊的语法Require local
代替Require ip 127.0.0.1
了解更多:http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
http://*.com/questions/3908592/ht-access-ip-限制性和htpasswd的 尝试 – Ascherer 2012-01-13 17:49:29
你试过'SetEnvIf之后REMOTE_ADDR^127 \ .0 \ .0 \ .1 $ develmode = yes' – 2012-01-13 17:51:43