2013-04-28 158 views
1

我目前有哪些工作指导http://domain.comhttps://www.domain.com一些规则,但它不工作(我想这不是匹配?)为http://www.domain.com,这应该重定向到https://www.domain.com。有人可以修改下面这样做吗?我已经尝试了很多东西,但都没有成功,这是我第一次使用.htaccess重写规则。的.htaccess HTTP到HTTPS和非www到www

TL; DR,我需要重定向到两个WWW和HTTPS

RewriteEngine On 

RewriteRule .? - [E=PROTO:http] 

RewriteCond %{HTTPS} =on 
RewriteRule .? - [E=PROTO:https] 

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

编辑:我发现下面的代码,这在一定程度作品 - 它重定向既https://www.domain.com,但它提供了一个“太许多重定向“错误。

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} (www\.)?(.+)$ [NC] 
RewriteRule^https://www\.%2%{REQUEST_URI} [L,R=301] 
+0

你有权访问服务器配置吗? – 2013-04-28 10:05:51

回答

2

你试过类似的东西吗?

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

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

在服务器的VirtualHost中修改它会更好。

NameVirtualHost *:80 
<VirtualHost *:80> 
ServerName www.domain.com 
ServerAlias domain.com 
Redirect permanent/https://www.domain.com/ 
</VirtualHost> 

<VirtualHost _default_:443> 
ServerName www.domain.com 
DocumentRoot /www/ 
SSLEngine On 
# etc... 
</VirtualHost> 
+0

部分工作,就像我的例子中的第二个。 I.E,它改变为https:// www,但我得到错误310(net :: ERR_TOO_MANY_REDIRECTS):有太多的重定向。 这个“修补程序”适用于cPanel环境中的许多客户端,因此修改虚拟主机是不太可能的。 – bhavicp 2013-04-28 10:55:39

0

这是我使用的规则:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule^http://%1%{REQUEST_URI} [R=301,L] 
</IfModule> 

你可以包括RewriteCond %{HTTPS} !=on作为第一条件强制删除HTTPS,如果这是neccesary ...

希望帮助..

相关问题