2013-04-10 106 views
1

我有下面的代码重定向非www到www为https,它的工作原理:如何将http重定向到https?

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

的问题是,我当我去www.site.com它不重定向到https。我试着也加入代码下输入以下代码在顶部,但我在https://www.www.site.com

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

只需删除额外的www。 – SteveP 2013-04-10 06:42:48

+0

从哪里?底端?因为如果我这样做,我会得到一个无限循环。 – Cris 2013-04-10 06:47:20

回答

3

最终也许这就是你需要:

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

感谢您的答案,但它也将它引入无限循环。 – Cris 2013-04-10 07:16:49

+0

这种行为没有理由。你删除了以前的代码吗? – 2013-04-10 07:20:19

+0

是的,我删除了以前的代码。我使用的是opencart,并从opencart的原始htaccess中编写了您在RewriteEngine ON下面编写的代码。 – Cris 2013-04-10 07:31:37

2

请检查这一个:

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^www\. 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1