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而服务器(linux 1.6.8a的centos5 / xampp)是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工作的任何想法?我用谷歌搜索并阅读但无法破解它。
答案 0 :(得分:1)
<IfDefine>
不能像你想的那样工作。它检查通过-Dparameter
(或Apache 2.3中的httpd
at startup)传递给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
设置为Any
时,Satisfy
directive允许您在通过主机验证时被授予访问权限,或如果您提供了密码。