2011-12-05 29 views
0

我有一個很好的.htaccess文件。它無聲重定向到另一個網站。對於一個特定的頁面,我需要在查詢字符串中查找一個附加參數並將其傳遞給站點。不知道該怎麼辦呢....這裏是我的文件至今:.htaccess QUERY_STRING查找2個變量並正確重寫

RewriteEngine On 

    RewriteRule ^ajax/(.*)$ http://final.site.com/ajax/$1 [P,L] 
    RewriteRule ^includes/(.*)$ http://final.site.com/includes/$1 [P,L] 
    RewriteRule ^themes/(.*)$ http://final.site.com/themes/$1 [P,L] 
    RewriteRule ^css/(.*)$ http://final.site.com/css/$1 [P,L] 
    RewriteRule ^js/(.*)$ http://final.site.com/js/$1 [P,L] 

    RewriteCond %{HTTP_HOST} ^myusername.site.com [NC] 
    RewriteCond %{QUERY_STRING} ^$ 
    RewriteRule (.*) http://final\.site\.com/?username=myusername&page_name=Home [P,L] 

    RewriteCond %{QUERY_STRING} page_name=(.*) [NC] 
    RewriteCond %1 !=get_some_kind_of_data [NC] 
    RewriteRule (.*) http://final\.site\.com/?username=myusername&page_name=%1 [P,L] 

所以我只想補充這...如果我去http://myusername.com/?page_name=All%20Art&collection_id=6,應該默默地造就http://final.site.com/?username=myusername&page_name=All%20Art&collection_id...and如果是PAGE_NAME其他任何東西(除了上面顯示的「get_some_kind_of_data」),都不會傳遞collection_id。

回答

0

嘗試用這種替代最後一條規則:

# If page_name=get_some_kind_of_data, proxy everything in the query string along with username 
RewriteCond %{QUERY_STRING} (^|&)?page_name=get_some_kind_of_data($|&)? [NC] 
RewriteRule (.*) http://final.site.com/?username=myusername [P,L,QSA] 

# If page_name exists but it isn't get_some_kind_of_data, match collection_id and remove it 
RewriteCond %{QUERY_STRING} (^|&)?page_name=([^&]+)($|&)? [NC] 
RewriteCond %1 !get_some_kind_of_data [NC] 
RewriteCond %{QUERY_STRING} (.*)(^|&)?collection_id=[0-9]+(.*) [NC] 
RewriteRule (.*) http://final.site.com/?username=myusername&%1%3 [P,L] 

因此,對於一個請求:

http://myusername.com/?foo=bar&page_name=get_some_kind_of_data&collection_id=6代理來http://final.site.com/?username=myusername&foo=bar&page_name=get_some_kind_of_data&collection_id=6

而且

http://myusername.com/?foo=bar&page_name=get_something_else&collection_id=6代理http://final.site.com/?username=myusername&foo=bar&page_name=get_something_else

這是你在找什麼?