htaccess - 使用密码或ip白名单

Bob*_*Bob 36 .htaccess

所以我想限制访问网址.现在,如果他们来自给定的IP地址,则不应提示他们输入密码.如果他们不是来自givin IP地址,则应提示他们输入密码.

所以其中一个或两个:

AuthUserFile /some/path/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Run Code Online (Sandbox Code Playgroud)

和:

order deny,allow

deny from all
allow from x.x.x.x
Run Code Online (Sandbox Code Playgroud)

Fbn*_*Fgc 63

您可以使用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
Run Code Online (Sandbox Code Playgroud)

无密码访问权限仅允许从127.0.0.1开始.

希望这可以帮助.


Ola*_*che 7

Apache 2.4 Satisfy仍然可用,但已弃用

注意

mod_access_compat提供的指令已被mod_authz_host弃用.将旧的指令(如Order,Allow或Deny)与新的指令(如Require)混合在技术上是可行的,但不鼓励.创建此模块是为了支持仅包含旧指令的配置,以便于2.4升级.请查看升级指南以获取更多信息.


在你的情况下Allow from 1.2.3.4被替换为Require ip 1.2.3.4

可以通过授权容器来组合多个Requires(例如Require valid-userRequire ip).所以说客户端必须提供密码或来自特定的IP地址,可以通过将指令包围起来来完成,例如RequireAny

<RequireAny>
    Require valid-user
    Require ip 1.2.3.4
</RequireAny>
Run Code Online (Sandbox Code Playgroud)

虽然,这是一个特殊情况,如最后所述 Require

当在单个配置节中使用多个Require指令并且不包含在另一个授权指令中时<RequireAll>,它们隐式包含在<RequireAny>指令中.因此,授权用户的第一个授权整个请求,并忽略后续的Require指令.

换句话说,RequireAny这里是可选的,你可以列出

Require valid-user
Require ip 1.2.3.4
Run Code Online (Sandbox Code Playgroud)