Vla*_*nea 4 apache .htaccess server-configuration httpd.conf basic-authentication
如果主机是 dev.example.com 或 test.example.com,我想告诉 Apache 2.4.9 要求有效用户。这不起作用:
AuthType Basic
AuthName "Speak, friend, and enter."
AuthBasicProvider file
AuthUserFile /sites/example/conf/.htpasswd
AuthGroupFile /dev/null
SetEnvIfNoCase Host ^dev\.example\.com$ env_is_protected
SetEnvIfNoCase Host ^test\.example\.com$ env_is_protected
Require valid-user
Require not env env_is_protected
Run Code Online (Sandbox Code Playgroud)
在以下示例中,前五行始终与第一个示例中的相同。
这不起作用:
SetEnvIfNoCase Host ^dev\.example\.com$ env_is_protected
SetEnvIfNoCase Host ^test\.example\.com$ env_is_protected
<RequireAny>
Require valid-user
<RequireNone>
Require env env_is_protected
</RequireNone>
</RequireAny>
Run Code Online (Sandbox Code Playgroud)
它会导致服务器错误。该文档解释:
因为否定授权指令无法返回成功的结果,所以它们不能显着影响 <RequireAny> 指令的结果。(在它们失败并且所有其他指令返回中性值的情况下,它们最多可能导致指令失败。)因此,在 <RequireAny> 指令中不允许使用否定授权指令。
这不起作用:
SetEnv env_is_unprotected 1
SetEnvIfNoCase Host ^dev\.example\.com$ !env_is_unprotected
SetEnvIfNoCase Host ^test\.example\.com$ !env_is_unprotected
Require valid-user
Require env env_is_unprotected
Run Code Online (Sandbox Code Playgroud)
文档解释了 SetEnv:
此指令设置的内部环境变量在大多数早期请求处理指令运行后设置,例如访问控制和 URI 到文件名映射。如果您设置的环境变量是作为 RewriteRule 指令等早期处理阶段的输入,则应改为使用 SetEnvIf 设置环境变量。
这有效:
SetEnvIf Host . env_is_unprotected
SetEnvIfNoCase Host ^dev\.example\.com$ !env_is_unprotected
SetEnvIfNoCase Host ^test\.example\.com$ !env_is_unprotected
Require valid-user
Require env env_is_unprotected
Run Code Online (Sandbox Code Playgroud)
这看起来像一个黑客,需要几个小时才能弄清楚。我是否未能找到实现我非常简单的目的的正确方法?有没有更好的办法?
我就是这样做的。
(使用 Cj Case 很好的引文作为注释来解释细节。:D)
SetEnvIfNoCase HOST ^dev\.example\.com$ env_is_protected
SetEnvIfNoCase HOST ^test\.example\.com$ env_is_protected
<RequireAny>
<RequireAll>
# when the Require directive is negated it can only fail or return a neutral result,
# and therefore may never independently authorize a request
# (reason why we need an additional "all granted" here!)
Require all granted
Require not env env_is_protected
</RequireAll>
AuthType Basic
AuthName "Speak, friend, and enter."
AuthUserFile /sites/example/conf/.htpasswd
Require valid-user
</RequireAny>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5469 次 |
| 最近记录: |