【发布时间】:2019-03-15 20:37:40
【问题描述】:
我打算 HSTS 预加载一个网站,并看到以下标题。没问题。它有效。
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
HSTS 预加载的一个条件是我还将所有 HTTP 流量重定向到 HTTPS。为此,我使用以下说明:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
这也有效。如果它在hstspreload.org 测试我的根域(example.com),我会看到绿色并且可以将我的域添加到预加载列表中。这很棒,但有一点需要注意。
我想将我的网站加载到 https://www.example.com,而不是 https://example.com。这应该很简单:
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
如果返回到hstspreload.org,我会收到以下错误:
响应错误:响应中没有 HSTS 标头。
当我在hstspreload.org 栏中输入任何子域时,我看到绿色。它仅在我收到错误的根域上,因为似乎根域不再发送 HSTS 标头。但是,预加载的条件是根域必须发送header。
我做了功课并进行了搜索。我几年前读过this post,但我的问题不是关于SEO。而且,两种重定向(一种从 HTTP 到 HTTPS,一种从 to)对 Google 来说是可以的。
我有理由相信我可以进行 HSTS 预加载和 WWW 重定向。 Troyhunt.com 重定向到 HTTPS,然后是 WWW。根域也在hstspreload.org 上进行验证。但是,我相信他使用的是 IIS,所以问他在 Apache 上做什么对我帮助不大。
如有任何想法,我将不胜感激。我正在尝试,但我有点初学者。谢谢!
【问题讨论】:
标签: .htaccess redirect http-status-code-301 hsts