2010-09-10 88 views
0

SetEnv似乎不适用于我。我在的.htaccess试过这样:无法使用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工作?我已经Google搜索,但无法破解它。

+0

为了将来的参考,这看起来更像是一个[ServerFault](http://serverfault.com/)问题。 – 2010-09-12 00:27:08

+0

此外,我会建议使用摘要身份验证,而不是基本 – 2010-09-18 11:01:21

回答

1

<IfDefine>不像你想的那样工作。它检查通过-Dparameter(或Apache 2.3中的Define)传递给httpd at startup的参数,而不是环境变量。

这是确定的,虽然,你应该能够做到你想要什么样的这个代替:

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,可以让你通过主机验证您被授予访问权限,或者如果您提供了密码,则为

+0

优秀,谢谢蒂姆。完美的作品。 – kerry 2010-09-12 09:44:00