2017-10-18 44 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])。