2014-01-10 15 views
1

我想重定向「?p_id = 62」進行http認證,但它不起作用。一個網址的重寫規則/ HTTP認證

我的conf:

<LocationMatch ^/> 
    RewriteCond %{QUERY_STRING} !^\?p_id=62$ 
    RewriteRule^- [E=NO_AUTH:1,L] 
    Order deny,allow 
    Deny from all 
    AuthType basic 
    AuthName "Auth Needed" 
    AuthUserFile "/var/www/site/.htpasswd" 
    Require valid-user 
    Allow from env=NO_AUTH 
    Satisfy Any 
</LocationMatch> 

誰能幫助?

回答

0

你並不需要的查詢字符串的一部分?匹配:

RewriteCond %{QUERY_STRING} !^p_id=62$ 
RewriteRule^- [E=NO_AUTH:1,L] 

但是,這是行不通的。在應用mod_rewrite之前應用模塊,因此在重寫規則檢查查詢字符串以設置環境變量時,mod_auth已將該請求標記爲401(需要auth)。你可能不得不接受一個腳本型解決方案,如:

RewriteCond %{QUERY_STRING} !^\?p_id=62$ 
RewriteRule^/auth_script.php [L] 

<Files "auth_script.php"> 
Order deny,allow 
Deny from all 
AuthType basic 
AuthName "Auth Needed" 
AuthUserFile "/var/www/site/.htpasswd" 
Require valid-user 
</Files> 

auth_script.php將簡單地加載在$_SERVER['REQUEST_URI'] URI的內容,並將其返回到瀏覽器(不重定向)。

+0

謝謝喬恩! – Amauche