2017-10-18 71 views
0

我,許多人一樣,我目前正在使用重定向所有流量從80端口到https的這個方法:使用.htaccess進行HTTPS重定向的方法最好?

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 

雖然我也用下面的方法成功:

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

並且已經看見這種方法的工作,雖然我不使用它的任何地方目前:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

隨着3點很好的選擇(和潛在的幾個),與CHRO沿我和其他人現在showing security warnings非HTTPS版本,我想知道什麼是最好的方式應該是。這些方法中的一種明顯比另一種方法更好,還是會特定於特定情況? 「最佳實踐」會出現嗎?以https作爲新標準,是否有任何理由使用R而不是R=301,因爲https重定向應該幾乎總是永久的?

我問,因爲像很多自由職業者一樣,我遠不是服務器配置方面的專家,但它現在仍然在成功推出最小的網站方面發揮主要作用。

回答

1

如果你可以指定域名,最好的辦法是結合https和WWW:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [OR,NC] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.exemple.com%{REQUEST_URI} [NE,R=301,L] 

但在任何情況下,你應該先重定向到https加www,或有或無的WWW到http 。

你需要重定向301(使用[R = 301])而不是302(默認使用[R])。