17

我有大約18個域需要重定向到一個新域。它必須在有或沒有www前綴的情況下工作。重定向多個域到一個域(有或沒有www之前)

我已經試過這樣:(?只有用WWW之前,我想工作)

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    Rewritecond %{HTTP_HOST} !^www\.domain\.com 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 
</IfModule> 

這給了我一個重定向循環。

+0

因爲每個域末尾的'[OR]'沒有在你的答案中,這就解決了我的問題。 – qwerty

回答

30
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain1.com [OR] 
RewriteCond %{HTTP_HOST} ^domain2.com [OR] 
RewriteCond %{HTTP_HOST} ^domain3.com [OR] 
RewriteCond %{HTTP_HOST} ^domain4.com [OR] 
RewriteCond %{HTTP_HOST} ^domain5.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L] 

這將把您的所有18個域名重定向到您的新單域www.newdomain.com 否則,你可以使用下面的代碼來重定向每個域如果他們在單獨託管

RewriteCond %{HTTP_HOST} ^domain.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L] 
+0

謝謝,我會試試這個。 – qwerty

+0

是的,[OR]解決了我遇到的問題。謝謝! – qwerty

+0

歡迎您... –

-1
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L] 

^domain.com解決了WWW的問題,讓所有的子域現在將重定向。

確保http://www.newdomain.com不包含在RewriteCond中。

這將導致重定向循環

More info

+0

是否可以匹配「* not * newdomain.com」的任何內容,而不是將每個域手動添加爲「RewriteCond」?這對我來說是一個巨大的麻煩,因爲大約有18個域指向新域,而且客戶正在考慮儘快添加(我不想每次都要在.htaccess中挖掘)。 – qwerty

+0

不知道,你將不得不研究。但18真的不是那麼多... – surfer190

+0

'RewriteCond%{REQUEST_URI}!^ newdomain.com'我認爲這可以工作 – surfer190

17

而不是重定向a.comb.comc.comnewdomain.com你可以這樣做:

重定向的一切,是newdomain.comhttp://www.newdomain.com

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC] 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 

信用爲這個去:它在更詳細地解釋http://www.raramuridesign.com/blog/83-dev-htaccess-redirect-a-domain-or-multiple-domains.html

我嘗試了一個客戶端項目,它的作用就像一個魅力。

+0

'包含這樣的域名,如果我將'RewriteCond'地址填入'www.newdomain.com',它也會將任何子域重定向到www。我對嗎? – robotik

+0

這個工程很好,除了當網址附加了一些東西時(例如example.com/members)。是否可以將其擴展爲自動包含輸入URL的後面部分? – melat0nin

4

經過幾天搜索SO和其他主機指令後,我的經驗令人失望。然而,我的櫻桃採摘所有的人的最好workful部分,併產生了以下內容:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain1\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain2\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain3\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain3\.com$ 
RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/" [R=301,L] 
  • 上述格式也根據GUI進行重定向的cPanel風格。
  • 重定向www。版本和非www。版本的域名是其他解決方案之一(至少我試過了!)解決不了問題。
  • 注重^/?$RewriteRule

如果你想重定向主域到非www版本的WWW版本的它,最後兩行應該是這樣的:

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule ^/?$ "http\:\/\/domain\.com\/" [R=301,L] 

好重定向!

相關問題