2013-04-28 202 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 ...

希望幫助..

相關問題