如何在htaccess中强制在www之前使用https
how to force https before www in htaccess
我正在尝试最终确定 HSTS 合规性,我是一名网络专家,但这超出了我的理解范围。
我当前的 .htaccess 是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
</IfModule>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
我正在使用:https://hstspreload.org/ 检查合规性,当我 运行 这个工具用于我的域时 returns:
在添加 www 子域之前,http://example.com
(HTTP) 应立即重定向到 https://example.com
(HTTPS)。现在,第一个重定向是 https://www.example.com/
。需要额外的重定向以确保任何支持 HSTS 的浏览器都将记录顶级域的 HSTS 条目,而不仅仅是子域。
如何先强制使用 https?
多个重定向是可以的,但我想确保 https 是第一个。
您可以像这样进行重定向:
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]
我正在尝试最终确定 HSTS 合规性,我是一名网络专家,但这超出了我的理解范围。
我当前的 .htaccess 是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
</IfModule>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
我正在使用:https://hstspreload.org/ 检查合规性,当我 运行 这个工具用于我的域时 returns:
在添加 www 子域之前,http://example.com
(HTTP) 应立即重定向到 https://example.com
(HTTPS)。现在,第一个重定向是 https://www.example.com/
。需要额外的重定向以确保任何支持 HSTS 的浏览器都将记录顶级域的 HSTS 条目,而不仅仅是子域。
如何先强制使用 https?
多个重定向是可以的,但我想确保 https 是第一个。
您可以像这样进行重定向:
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]