2016-12-27 23 views
0

哪個.htaccess重定向規則用於創建所有以下轉發?將所有URL重寫爲新域,幷包含一個額外參數

。 。 。幷包括任何其他任意參數:

+0

下解決了第一套重定向,_except_那些#跡象。 。 。 'RewriteEngine on RewriteBase/ RewriteCond%{HTTP_HOST}^old \ .io $ [NC] RewriteRule ^(。*)$ http://new.com/$1?pa=va [R = 301,L] ' – citizen

+0

所以你想'http://old.io/'重定向到'http://new.com/?p1 = v1'和'http://new.com/?p1=v1&p2=v2 '!目前還不清楚你在問什麼。請考慮編輯您的問題並更清楚地描述問題。 – sepehr

+0

好的,@ sepehr。我只是糾正了底部的例子。 考慮每個項目符號一個單獨的HTTP請求。例如,'http:// old.io/abc#def''會轉發到''http://http://new.com/abc#def?p1 = v1'',同時''http:// old。 io#def?p2 = v2''轉發到''http://new.com#def?pa = va&p2 = v2''。 – citizen

回答

1

所以,基本上,你需要一個pa=va添加到任何可能的構造URL的查詢字符串:

RewriteEngine on 
RewriteBase/

# Check if the host matches old.io, 
# You might want to add www\. to that. 
RewriteCond %{HTTP_HOST} ^old\.io 

# Rewrite URLs with empty querystring 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)$ http://new.com/$1?pa=va [L,R] 

# Rewrite URLs with non-empty querystring  
RewriteCond %{QUERY_STRING} ^.+$ 
RewriteRule ^(.*)$ http://new.com/$1?pa=va&%{QUERY_STRING} [L,R] 

注意錨散列部需要查詢字符串後前來。如果您願意,可以test it online

+0

哇。謝謝@sepher。 只有''http://old.io/abc#def?p2 = v2''不起作用。它帶有兩個查詢字符串。即''http://new.com/abc?pa = va#def?p2 = v2''。 – citizen

+0

另外,我接受了您的建議,並添加了一個_www_檢查作爲''RewriteCond%{HTTP_HOST} ^(www \。)?old \ .io'' – citizen

+1

雖然該URL有效,但沒有正確構建。正如我所說的,查詢字符串應該在錨點哈希之前,而不是在它們之後。正確的URL是:'http://old.io/abc?p2 = v2#def'這與上面的重寫工作正常。其他需要注意的是,你不需要使用'www'的圓括號,因爲你沒有捕獲任何東西。 – sepehr

相關問題