htaccess – 使用密码或ip白名单
所以我想限制访问一个url。 现在如果他们来自一个给定的IP地址,那么他们不应该被提示input密码。 如果他们不是来自encryption的IP地址,那么他们应该被提示input密码。
所以无论是:
AuthUserFile /some/path/.htpasswd AuthName "Please Log In" AuthType Basic require valid-user
和:
order deny,allow deny from all allow from xxxx
您可以使用Apache “Satisfy”指令。
这是一个使用它的例子:
AuthType Basic AuthName "Please Log In" AuthUserFile /some/path/.htpasswd Require valid-user Order deny,allow Deny from all Allow from 127.0.0.1 Satisfy any
无密码访问只能从127.0.0.1开始。
希望这可以帮助。
使用Apache 2.4 Satisfy
仍然可用,但已弃用
注意
mod_access_compat提供的指令已被mod_authz_host弃用。 将诸如Order,Allow或Deny之类的旧指令与像Require这样的新指令混合在一起在技术上是可行的,但是不鼓励。 创build此模块是为了支持仅包含旧指令的configuration,以促进2.4升级。 请查看升级指南了解更多信息。
在你的情况下, Allow from 1.2.3.4
被replace为Require ip 1.2.3.4
可以通过Authorization Containers完成多个Require
(如Require valid-user
和Require ip
)的组合。 所以说客户端必须提供一个密码或来自一个特定的IP地址,将通过包含RequireAny
的指令RequireAny
,例如
<RequireAny> Require valid-user Require ip 1.2.3.4 </RequireAny>
虽然这是在Require
的末尾描述的特殊情况
在单个configuration节中使用多个Require指令并且不包含在其他授权指令(如
<RequireAll>
, 它们隐含在<RequireAny>
指令中。 因此,授权用户的第一个授权整个请求,并且随后的Require指令被忽略。
换句话说, RequireAny
在这里是可选的,你可以列出
Require valid-user Require ip 1.2.3.4