2011-06-01 85 views
2

我不是.htaccess專家,但我嘗試了幾個不同的事情來重定向域無濟於事。重定向www.domain.com/uk到www.domain.co.uk/uk

我已經得到了英國和美國域名...美國的一些網頁有英國擴展,並且需要指出正確的英國域名:

​​需要重寫才能www.domain.co.uk/uk

防爆。如果有人類型www.domain.com/uk/about將被改寫爲www.domain.co.uk/uk/about

編輯:與/uk路徑應該改寫

所以​​和www.domain.co.uk應該重寫www.domain.co.uk/uk/

回答

2

你可以嘗試這樣的事情:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] 
RewriteRule (.*) http://www.domain.co.uk/$1 [L,R=301] 

重要的一點是使用RewriteCond工作在HTTP主機頭上的ition。簡單地說,如果在正常的RewriteRule之前放置RewriteCond,則只有在條件匹配時才使用該規則。

上面的代碼摘錄重定向從.COM.CO.UK站點的所有請求,所以如果你只需要重定向特定的目錄,則需要相應地調整規則,如:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
RewriteRule uk(.*) http://www.domain.co.uk/uk$1 [L,R=301] 

編輯:我希望這將根據您的編輯爲您工作。

第一條規則將http://www.domain.com/ukhttp://www.domain.com/uk/anything重寫爲http://www.domain.co.uk/uk/anything

第二條規則重寫http://www.domain.co.ukhttp://www.domain.co.uk/uk/

編輯2:我改變了規則(修改了最後一個並添加了另一個),以反映.co.uk/something上重寫的需求。如果路徑以uk/開頭,那麼它只是通過,否則它會被重寫爲uk/something

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] 
RewriteRule uk($|/.*) http://www.domain.co.uk/uk$1 [L,R=301] 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC] 
RewriteRule ^uk/(.*) - [PT,L] 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.uk$ [NC] 
RewriteRule (.*) http://www.domain.co.uk/uk/$1 [L,R=301] 
+0

您的回答也需要考慮只有以'/ uk'開頭的路徑才應該被重定向。 – Greg 2011-06-01 22:16:38

+0

在我看來,最初的問題並不清楚是否應該只重定向路徑或文件。它主要是關於域名重定向,但是 - 確保 - 僅路徑重定向也應該是可能的(使用不同的規則)。 – jCoder 2011-06-01 22:36:52

+0

我已經爲我的帖子添加了一個編輯,不知道是否澄清了任何內容。 /英國應該永遠在英國頁面 – 2011-06-01 22:51:24