https://hstspreload.org/建议使用以下两个重定向:
我在.htaccess文件中使用以下代码实现了2重定向解决方案:
shrink=True
但是我想知道我以前使用的单一重定向规则的优势:
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
所以现在我很困惑,我应该使用2重定向实现在单一重定向解决方案上强制使用https吗?
使用单重定向和双重定向实现安全性和SEO的优缺点。
我也已经在.htaccess中使用它添加了HSTS标头:
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]
所以我应该提交到HSTS预加载列表以实施HSTS还是添加上述标头就足够了?
答案 0 :(得分:1)
如果您直接走一步:
http://example.com => https://www.example.com
然后,您将永远不会为https://example.com选择HSTS策略,因为您从未通过https访问该裸域。这是因为example.com是常用的(默认使用http://),但是https://example.com对于www网站很少使用。
这有两个问题:
因此,建议您执行此双重重定向,以便有更好的机会选择此域。对于使用您的裸域而不是使用您的首选www版本的用户而言,尤其如此。
双重重定向的一种替代方法是从主页的裸域中加载资源。例如:
<img src=“https://example.com/1pixel.png”>
这将确保加载用于裸域的HSTS策略,并且实际上比双重定向更好,因为如果您直接转到http://dev.example.com或http://www.example.com,它将也采用此策略。 / p>
就SEO和性能而言,说实话,这并没有多大差异。双重重定向会对性能产生轻微影响,并可能会稀释一些“ SEO果汁”,但我想大多数人会将您链接为您的首选域(https://www.example.com),而不是裸域,并且重定向是标准部分互联网,并且处理速度相当快。
我也已经在.htaccess中使用它添加了HSTS标头:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
所以我应该提交到HSTS预加载列表以实施HSTS还是添加上述标头就足够了?
我强烈建议您不要提交至预加载列表,也不要从标头中删除preload
属性(这样没人可以为您提交网站)。如上所述,预加载基本上是不可逆的,因此您需要非常有信心。
的确,互联网正在迁移到HTTPS,因此假设您只需要通过HTTPS访问您的站点以及该域下的每个站点,这样做就应该相当安全,但是您会惊讶地发现有这么多人发现实际上,他们在该域下有一个或多个仍然需要HTTP的站点。如果您仅在预加载后才发现它们,则只能选择我们将所有这些HTTP网站迁移到HTTPS,否则在用户获得浏览器的预加载说明后,这些站点将仍然对用户不可用。
如果使用HTTP标头运行了几周或几个月(最好是上面提到的像素技巧)后没有发现任何问题,那么您不妨考虑进行预加载。但老实说,我认为对于大多数网站来说,这太过分了。有关我为何有这种(颇有争议的)观点的一些原因,请参阅我的帖子,以获取更多信息:https://www.example.com