2012-05-22 42 views
1

大師的幫助表示讚賞。htaccess experts:重定向除root以外的所有頂級域名,將根目錄重定向至另一頂級域名 - WordPress

我被要求將一個客戶端的WordPress主頁放在一個頂級域名(即domain.eu)上,並讓所有其他頁面/目錄301被添加到不同的TLD擴展名(即domain.com/everything-else) 。不知道爲什麼這是要求,但顯然這對客戶很重要,我一直在砸我的頭,讓它工作。有任何想法嗎?

實例:

如果URL擊中了任何領域頂級域名的根,他們應該被重定向到.eu域名(http://domain.eu/),但一切應到.COM域(http://domain.com/)

羅茨:

http://domain.com OR 
http://domain.net OR 
http://domain.edu/index.php OR 
http://domain.org/index.html OR 
http://domain.* (* = any extension) 

301:http://domain.eu

但是,其他所有需要維護目錄結構,並被重定向到其他TLD(http://domain.com)。舉例..

來源:

http://domain.net/blog/category 

301:

http://domain.com/blog/category 

來源:

http://domain.org/blog/category/post 

301:

http://domain.com/blog/category/post 

一切我已經試過在重定向循環結束或只有部分成功。例如,下面的代碼放在WordPress重定向上方,並且它正確地重定向,即所有目標URL都被命中,但根(主頁)具有重定向循環錯誤。有什麼想法嗎?

RewriteEngine On 
RewriteBase/
Options +FollowSymLinks 

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

RedirectMatch ^/$ http://domain.eu 

RewriteCond %{REQUEST_URI} !^/$ [NC] 
RewriteCond %{HTTP_HOST} ^domain.com.au$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^domain.eu$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^domain.de$ [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] 

我對htaccess有點新手,所以讓我知道我是如何去解決這個錯誤的,謝謝!

回答

0

嘗試用以下代碼替換redirectmatch。

RewriteCond %{HTTP_HOST} !^domain.eu$ [NC] 
RewriteRule ^/?$ http://domain.eu/ [R=301,L] 
+0

非常好,謝謝你的幫助! –

+0

不客氣。 RedirectMatch屬於mod_alias,而不是mod_rewite。混合兩者有時會造成麻煩,所以最好避免這種情況。 – Gerben

0

WordPress將重定向任何與WordPress配置中的域不匹配的URL。您需要編寫WP插件或使用代理來獲取其他域的主頁。