2011-04-05 77 views
5

我想寫一個規則,一個域名permenantly重定向到另一個域名常駐通過Apache重寫規則重定向

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

這隻能如果用戶記得在WWW輸入,如果用戶沒有輸入在www中的網址,頁面將加載,但圖像鏈接將被打破。

有誰知道如何調整上面的規則,它可以使用和不使用www?

我在redhat上使用LAMP配置,apache 2。

回答

9

您可以提供與[OR]幾個可選的重寫-條件:

RewriteCond %{HTTP_HOST} ^www.companyname1.com$ [OR] 
RewriteCond %{HTTP_HOST} ^companyname1.com$ 
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L] 

這應該做的伎倆。如果www存在,第一個Rewrite-Condition會觸發,如果www被遺忘,則第二個會觸發。

+2

符號名稱[R =永久]」代替數字301是略微更優的,因爲這將避免在你的配置的混亂。從http://httpd.apache.org/docs/2.0/mod/ mod_rewrite.html使用:「RewriteRule ^(。*)$ http://www.companyname2.com/$1 [R =永久,L]」 – Stickley 2013-02-16 20:30:32

+1

對我來說,RewriteRule http://www.companyname2.com/$1增加了一個額外的斜槓後,所以我不得不取代它與http://www.companyname2.com$1 – 2013-10-05 11:05:45

+0

@Stickley哇。「稍微更優化」。你意識到「最優」是一個最好的? – arkascha 2016-02-13 12:27:27

2

重定向不適合我,我不得不調整它,下面是基於@Demento的答案的工作版本。

# Parmenent redirect to webdesign.danols.com of all pages 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www.kingston-web-design.com [OR] 
RewriteCond %{HTTP_HOST} ^kingston-web-design.com 
RewriteRule ^(.*)$ http://webdesign.danols.com.com$1 [R=301,L] 
1

如果你不在乎什麼主機名和然後開始不根正則表達式,只是檢查它與companyname1.com結束。

至於前導斜槓只需添加它作爲您的正則表達式的根可選。

RewriteCond %{HTTP_HOST} companyname1.com$ 
RewriteRule ^/?(.*) http://www.companyname2.com/$1 [R=permanent,L]