如何在htaccess中强制https之前使用https

时间:2018-02-02 20:30:02

标签: .htaccess hsts

我正在努力完成HSTS的合规性并且是一个Web人员,但这是我的头脑。

我目前的.htaccess是:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{ENV:HTTPS} !on [NC]
  RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
</IfModule>

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS

我正在使用:https://hstspreload.org/来检查合规性,当我为我的域运行此工具时,它会返回:

在添加www子域之前,

http://example.com(HTTP)应立即重定向到https://example.com(HTTPS)。现在,第一次重定向是https://www.example.com/。需要额外的重定向以确保任何支持HSTS的浏览器都会记录顶级域的HSTS条目,而不仅仅是子域。

如何先强制使用https?

多个重定向是可以的,但我想确保https是第一个。

1 个答案:

答案 0 :(得分:0)

您可以像这样重定向:

RewriteEngine On
RewriteBase /

# http -> https keeping same domain
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]

# then add www while keeping it https
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]