我有两个域,www.example.com和staging.example.com(两者都托管在同一个盒子上)。
我想始终将example.com重定向到www.example.com,但是当我使用来自其他SO线程的解决方案时,它会破坏暂存域。
有人能指出我正确的方向吗?
谢谢!
更新:这是否也包括https?如果没有,我该怎么做才能让它发挥作用?
答案 0 :(得分:2)
您需要在目录根目录下的.htaccess文件中输入:
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
魔法在于^,这表明如果地址是example.com的地址,它应该只重写网址。这使得staging.example.com脱离了循环。
如果您需要为HTTPS执行此操作,只需在条件中添加以下行并根据需要进行调整(= on或!= on):
RewriteCond $ {HTTPS} = on
这给了你:
RewriteCond ${HTTPS} =on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
哦,别忘了把RewriteEngine放在.htaccess文件的顶部
答案 1 :(得分: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
不应有任何冲突