无法使用setenv在.htaccess中工作
问题描述:
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搜索,但无法破解它。
答
<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
为了将来的参考,这看起来更像是一个[ServerFault](http://serverfault.com/)问题。 – 2010-09-12 00:27:08
此外,我会建议使用摘要身份验证,而不是基本 – 2010-09-18 11:01:21