2014-12-30 166 views
0

我最近从一个Windows服务器切换到godaddy,linux,cpanel服务器。我不是用htaccess的goos,我认为这应该是一个相当简单的事情,但我无法做到。htaccess - 重定向非www到https与www

我的SSL证书已设置为在此类网站上工作,如https:www.mydomain.com,但不适用于(非www网站)。

我想所有的流量来为https:example.com/any-folder/any-file重定向到https:www.example.com/any-folder/any-file

所有流量来http:example.com/any-folder/any-file重定向到http:www.example.com/any-folder/any-file

感谢您提供任何帮助。 这是我的htaccess文件现在:(所有的请求都被重定向到https ....我很困惑)

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
+0

的[重定向到HTTP非www到HTTPS WWW的htaccess]可能重复(http://stackoverflow.com/questions/17453412/redirect-to -http-non-www-to-https-www-htaccess) – Sumurai8

+0

我尝试了可能的重复,但是所有的url重定向到https。这里是我试过的whaty:​​ 'RewriteEngine On' 'RewriteCond%{HTTP_HOST}!^ www \。 [*] 'RewriteRule ^(。*)$ http://www.domain.com/$1 [L,R = 301]' 'RewriteCond%{HTTPS} off' 'RewriteRule ^(。*) $ https://www.domain.com/$1 [L,R = 301]' – Tom

+0

正如您所看到的,评论中的代码并不真正起作用。相反,编辑问题,如果您有其他信息;-) – Sumurai8

回答

0

这样做的原因行为是

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

将改写所有的请求缺少www.http://www.example.com/$1。也用于HTTP请求。这个重写将会产生一个新的请求,因为它是一个重定向,你用[R]定义了什么。

之后,下一个规则

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

将重定向不HTTPS来https://www.example.com/$1所有请求。即使原始请求不应该是HTTP。

你必须做它在某种程度上是这样的:

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

我试过你的建议,但仍然是一个问题。 https://example.com不会重定向到https://www.example.com,因此页面显示证书错误。 ****有问题的回复前2个网址应以https开头....它不显示时显示为链接*****对不起 http://example.com确实重定向到尽管http://www.example.com。 – Tom

+0

在测试之前,您是否清理了浏览器缓存?我建议总是在新的隐私浏览标签中测试重写规则的变化,因为你的浏览器会缓存这个重定向。 – LucasF

相关问题