2013-08-01 24 views
0

OK,說我的博客網站myurl.org許多鏈接到一個單獨的域:將olddomain查詢字符串佈局重定向到newdomain和新的查詢字符串佈局?

old.myurl.org?oldvar=foo 

只有old.myurl.org不再存在,並且通過new.myurl.org已被替換。

如果查詢字符串瓦爾是相同的new.myurl.org,我相信我會利用.htaccess改寫:

RewirteCond %{http_host} ^old.myurl.org$ [NC] 
RewriteRule ^(.*)$ new.myurl.org [L,R=301,QSA] 

唯一的問題是,我還需要從oldvar查詢字符串VAR改爲newvar和保存它的數據(foo)。

有很多關於如何以不同方式重寫查詢字符串變量的例子,但我似乎無法找到這種情況的例子。

我需要重寫:

old.myurl.org?oldvar=foo 

要:

new.myurl.org?newvar=foo 

編輯

此外,我必須考慮一些潛在的查詢字符串鍵值,但並非所有人都永遠在場。

所以我可能需要:

old.myurl.org?oldvar=foo&oldvar2=bar --> new.myurl.org?newvar=foo&newvar2=bar 

old.myurl.org?oldvar2=bar --> new.myurl.org?newvar2=bar 

這可能甚至是不可能的,但在一種情況下,我需要剝去查詢字符串值的一部分。所以?oldvar=foo{term}可能需要變成?newvar=foo

再次感謝!

回答

1

第一個條件匹配的域名,第二個條件符合的查詢字符串和規則將匹配您的域名根:

RewriteCond %{HTTP_HOST} ^old\.myurl\.org$ [NC] 
RewriteCond %{QUERY_STRING} ^oldvar=(\w+)$ 
RewriteRule ^$ http://new.myurl.org/?newvar=%1 [R=301,L] 

您可以將多個查詢字符串,以及:

RewriteCond %{HTTP_HOST} ^old\.myurl\.org$ [NC] 
RewriteCond %{QUERY_STRING} ^oldvar=(\w+)$ [OR] 
RewriteCond %{QUERY_STRING} ^oldvar=(\w+)&oldvar2=(\w+)$ 
RewriteRule ^$ http://new.myurl.org/?newvar=%1&newvar2=%2 [R=301,L] 

RewriteCond %{HTTP_HOST} ^old\.myurl\.org$ [NC] 
RewriteCond %{QUERY_STRING} ^oldvar2=(\w+)$ 
RewriteRule ^$ http://new.myurl.org/?newvar2=%1 [R=301,L] 

要使用類似x/y/z這樣的路徑,您可以更改RewriteRule例如我們當前使用的規則,將只從yourdomain.com/?...這是:

RewriteRule ^$ http://new.myurl.org/?newvar2=%1 [R=301,L] 

如果你想趕上一個不同的路徑,你會做到這一點:

RewriteRule ^x/?$ http://new.myurl.org/?newvar2=%1 [R=301,L] 

以上會趕上yourdomain.com/x?...yourdomain.com/x/?...

你可以有一個以上的路徑,以及和使用OR條件是這樣的:

RewriteRule ^(x|x/y|x/y/z)/?$ http://new.myurl.org/?newvar2=%1 [R=301,L] 

以上表示我們想匹配x/?... OR x?... OR x/y?...x/y/?... OR x/y/z?... OR x/y/z/?...

通過封裝它放在括號並使用|作爲分離器和OR。

^$指從開始到結束的比賽,所以當它不包含任何表示比賽沒有什麼,這意味着根文件夾domain.com/,當有內容,將例如domain.com/x或任何你放入它的內容相匹配。

+0

感謝Prix,這有幫助。 –

+0

@AaronWaller [請將它標記爲正確的答案,如果它解決了您的問題,請參閱這裏。](http://stackoverflow.com/about) – Prix

+0

問題雖然...如果未滿足%{QUERY_STRING}條件重寫規則仍然適用域重寫?此外,我有幾個潛在的查詢字符串鍵,我必須考慮,其中沒有保證。我將用一個例子編輯原始問題...... –