2011-02-23 55 views
0

我在我的apache服務器上創建了一個基於查詢的身份驗證,但是我從apache得到了一個奇怪的行爲,並且找不到我的出路。這裏是.htaccess代碼:htaccess apache mod_rewrite&身份驗證:奇怪的行爲

RewriteEngine on 
RewriteCond %{QUERY_STRING} p=1 
RewriteRule ^(.*)$ $1?map=$1 [E=authme:1] 
Order deny,allow 
Deny from env=authme 
AuthType Basic 
AuthName "Login Required" 
AuthUserFile /var/www/test/.htpasswd 
require valid-user 
Satisfy any 

我希望apache查看p = 1的查詢字符串。如果發現設置了環境變量(authme = 1)。這工作正常!
如果p = 1出現在查詢字符串中,我期望認證是必需的(拒絕來自env = authme)。
所有這些東西奇妙地工作,如果從瀏覽器調用主索引文件(在我的情況下index.php),但根本不工作如果調用同一目錄中的其他文件。
環境變量設置正確(我可以使用PHP進行檢查),但不需要驗證。

我真的不明白爲什麼。任何幫助將不勝感激!

更多信息,可以發現here

回答

0

你有這一個接一個的任何其他重寫規則?你有沒有試過把它作爲最後的[L]規則?你有沒有嘗試在第二個瀏覽器中從未在任何網址上進行身份驗證?

0
require valid_user 

應該

require valid-user 
+0

你是對的。在我的服務器上,我'需要有效用戶',但它仍然無法工作。我嘗試使用'[L]'語句使我的重寫規則的最後一條規則如@ Z99所示,但沒有任何變化。這是一個Apache錯誤? – bradypus 2012-02-04 13:48:35