2012-12-20 122 views
1

目前,我有我的.htaccess文件重定向到該網站的SSL版本的所有請求如下:重定向與查詢字符串的URL到一個新的URL與同一查詢字符串

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-SSL} !on 
RewriteRule ^(.*) https://www.mydomain.com$1 [R=301,nc] 

現在,我想將呼叫重定向到我當前的根URL - 只有當查詢字符串連接 - 具有相同查詢字符串的新URL時。例如:

https://www.mydomain.com/?foo=bar重定向到:

https://www.mydomain.com/new_mapping/?foo=bar

雖然沒有查詢字符串的請求繼續去https://www.mydomain.com/

預先感謝任何幫助。

回答

1

使用RewriteCond爲非空查詢字符串匹配.+,如果你想實際重定向瀏覽器以顯示新的URL,使用[R=301][QSA]

RewriteEngine On 
# If the querystring has at least 1 character 
RewriteCond %{QUERY_STRING} ^.+ 
# Rewrite requests to the root 
RewriteRule ^/?$ new_mapping [L,QSA] 

重寫。 [QSA]在技術上不是必須的,因爲查詢字符串將自動附加重定向。

RewriteRule ^/?$ new_mapping [L,R=301,QSA] 
+0

這似乎沒有做任何事情。我應該把它放在與我目前的'RewriteRule'有關的某個地方嗎? –

+0

@AbidA它應該放在你的SSL重定向之後。我也會把它改成'^ /?$,儘管這不是必須的。要進行調試,請刪除RewriteCond並驗證根URL規則是否匹配,然後添加RewriteCond。 –

+0

我確實測試了我自己的規則,它的工作原理。 –

相關問題