2010-09-10 52 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