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-userRequire 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