2013-08-01 34 views
1

我需要編寫重寫規則以從一個域重定向到另一個域。htaccess重定向到其他域和語言

maindomain.com/en/ -> secounddomain.com/en/ 
    maindomain.com/en/pagename.html -> secounddomain.com/en/pagename.html 
    www.maindomain.com/en/ -> secounddomain.com/en/ 
    www.maindomain.com/en/pagename.html -> secounddomain.com/en/pagename.html 
    secounddomain.com -> secounddomain.com/en/ 
    www.secounddomain.com -> secounddomain.com/en/ 

和安全(無反)

secounddomain.com/pl/ -> secounddomain.com/en/ 
    www.secounddomain.com/pl/ -> secounddomain.com/en/ 

我嘗試做這樣的,但它不工作:

RewriteCond %{HTTP_HOST} ^maindomain.com/en/$ [NC] 
    RewriteRule ^(.*)$ http://www.secounddomain.com/en/$1 [r=301,L] 

    RewriteCond %{HTTP_HOST} ^www.maindomain.com/en/$ [NC] 
    RewriteRule ^(.*)$ http://www.secounddomain.com/en/$1 [r=301,L] 

    RewriteCond %{HTTP_HOST} ^www.secounddomain.com/pl/$ [NC] 
    RewriteRule ^(.*)$ http://www.secounddomain.com/en/$1 [r=301,L] 

    RewriteCond %{HTTP_HOST} ^secounddomain.com/pl/$ [NC] 
    RewriteRule ^(.*)$ http://www.secounddomain.com/en/$1 [r=301,L] 

最好的問候。

回答

0

這一切的條件首先是錯誤的:

RewriteCond %{HTTP_HOST} ^maindomain.com/en/$ 

由於%{HTTP_HOST}只能匹配的主機名,因此它只能匹配maindomain.com

這裏是你的.htaccess應該如何看起來像:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?maindomain\.com$ [NC] 
RewriteRule ^(en(?:/.*|))$ http://secounddomain.com/$1 [L,R=301,NC] 

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

RewriteCond %{HTTP_HOST} ^(www\.)?secounddomain\.com$ [NC] 
RewriteRule ^pl(/.*|)$ http://secounddomain.com/en$1 [L,R=301,NC] 
+0

你使用哪個URL來測試和沒有工作? – anubhava

+0

感謝@anubhava的回覆,但這對我不起作用。首先,當我把你的部分代碼: RewriteCond%{HTTP_HOST}^maindomain.com [NC] RewriteRule ^(pl(?:/.* |))$ https://maindomain.com/$1 [L ,R = 301,NC] 我得到了重定向循環錯誤。 這應該從maindomain.com重定向到maindomain.com/pl/? 我忘了說我必須將不同的域名停放在一個網站上。首先maindomain.com轉到PL語言,secounddomain.com轉到EN語言。 –