2011-01-21 117 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