SetEnv 似乎对我不起作用。我在我的 .htaccess 中试过这个:
SetEnvIf Remote_Addr ^192\.168\.0$ ip_ok
<IfDefine !ip_ok>
AuthName "Guest Login"
AuthType Basic
AuthUserFile /opt/lampp/lib/ok_users/guests.users
require valid-user
</IfDefine>
即使我的 ip 是 192.168.0.10 并且服务器(centos5/xampp for linux 1.6.8a)是 192.168.0.1,我也必须提供用户名/密码凭证
所以我尝试了这个:
SetEnv ip_ok
<IfDefine !ip_ok>
AuthName "Guest Login"
AuthType Basic
AuthUserFile /opt/lampp/lib/ok_users/guests.users
require valid-user
</IfDefine>
但是 setenv 没有设置 ip_ok,我还是遇到了挑战。
然后我试了一下:
SetEnv ip_ok
<IfDefine ip_ok>
AuthName "Guest Login"
AuthType Basic
AuthUserFile /opt/lampp/lib/ok_users/guests.users
require valid-user
</IfDefine>
而且我不会受到挑战。因此 IfDefine 正在运行。
为什么我不能让 SetEnv 和 SetEnvIf 工作?我用谷歌搜索和阅读但无法破解。
最佳答案
<IfDefine>
不像你想的那样工作。它检查传递给 httpd
at startup 的参数通过-Dparameter
(或 Apache 2.3 中的 Define
),而不是环境变量。
不过没关系,你应该能够像这样做你想做的事:
Order allow,deny
AuthName "Guest Login"
AuthType Basic
AuthUserFile /opt/lampp/lib/ok_users/guests.users
Require valid-user
Allow from 192.168.0
Satisfy Any
Satisfy
directive , 当设置为 Any
, 如果您通过主机验证,或如果您提供了密码,则允许您被授予访问权限。
关于linux - 无法让 setenv 在 .htaccess 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688280/