2011-01-21 64 views
1

我有兩個域,www.example.com和staging.example.com(都託管在同一個框中)。將非www域重定向到www,保留登臺

我想總是將example.com重定向到www.example.com,但是當我使用來自其他SO線程的解決方案時,它會打破暫存域。

有人能指出我正確的方向嗎?

謝謝!

更新:這是否覆蓋https以及?如果沒有,我需要做些什麼才能做到這一點?

+0

你想`staging.example.com`重定向到` www.staging.examp le.com`以及? – sdleihssirhc 2011-01-21 20:28:37

+0

暫時停留在staging.example.com – thekevinscott 2011-01-21 20:49:21

回答

2

你在你的根目錄下需要這個在您的.htaccess文件:

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

魔力在於^表示它應該只重寫url,如果地址由example.com開頭。這將staging.example.com留在循環之外。

如果你需要做的是爲HTTPS以及剛剛添加以下行的條件,並調整它爲您的需要(=或= ON!):

的RewriteCond $ {HTTPS} =上

它給你:

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

哦,不要忘記把RewriteEngine敘述上線在你的.htaccess文件的頂部

0
RewriteEngine On 

# not HTTPS 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# HTTPS 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{HTTPS} =on 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

不應該有與staging.example.com任何衝突

+0

https可以做什麼? – thekevinscott 2011-01-21 20:56:04