2014-12-30 228 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

相關問題