使用.htaccess重定向HTTPS的哪种方法最好?

时间:2017-10-18 13:49:41

标签: apache .htaccess redirect https

我和很多人一样,目前正在使用这种方法将所有流量从端口80重定向到https:

{
   "subject":"New Event 3",
   "isOrganizer":true,
   "organizer":{
      "emailAddress":{
         "name":"Owner",
         "address":"owner@..."
      }
   }
},
{
   "subject":"New event 2",
   "isOrganizer":true,
   "organizer":{
      "emailAddress":{
         "name":"Owner",
         "address":"owner@..."
      }
   }
},
{
   "subject":"New event",
   "isOrganizer":true,
   "organizer":{
      "emailAddress":{
         "name":"Owner",
         "address":"owner@..."
      }
   }
}

虽然我也成功使用了以下方法:

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]

有3个不错的选项(可能还有几个),Chrome以及其他版本showing security warnings适用于非https版本,我想知道前进的最佳方式是什么。这些方法中的一种明显优于另一种方法,还是特定于案例?最佳实践'出现?将https作为新标准,是否有理由使用RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 代替R,因为https重定向几乎总是永久性的?

我问,因为像许多自由职业者一样,我远不是服务器配置专家,但它仍然在最近成功推出最小网站方面发挥了重要作用。

1 个答案:

答案 0 :(得分: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]

但在任何情况下,您都不应该首先重定向到没有www的https,或者使用或不使用www重定向到http。

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