2013-04-10 205 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