hsts,301s http www to https:// canonical htaccess

时间:2016-10-20 12:29:36

标签: .htaccess redirect hsts

评论1:我是stackoverflow的新手,我不是真正的程序员,所以如果我做错了,请原谅我。 (我非常大喊大叫"该死的Jim,我是一名医生而不是编码员!"现在)

评论2:我曾尝试过做作业,但就我不是程序员而言,我在找出问题的确切答案时遇到了一些麻烦。如果我错过了什么,请告诉我,希望这不会浪费任何人的时间。

最终目标是加快并保护我的网站。它应该全部通过https。

我注意到我的(wordpress)网站速度测试速度要快得多(加载时间= 1-2秒vs 5-8秒)如果我键入" https://"直接进入测试仪。瀑布表明需要很长时间才能将http重定向转换为https(这是有道理的,因为我的.htaccess目前没有列出重定向...我很惊讶它没有'完全失败了。

我希望通过在.htaccess中提供重定向,我的网站速度将更接近于我在键入" https://"时所看到的内容。直接

这一切都让我在.htaccess中调查了HSTS和301重定向。似乎有很多不同的方法来进行这些重定向,我不确定这些差异是什么。

例如,这是否更好:     

RewriteEngine On
RewriteCond !{HTTPS} off
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

</IfModule>

或者这个(我的托管服务提供商推荐)?

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

然后我在varvy上找到.htaccess https://varvy.com/pagespeed/hsts.html的代码。

我想添加.htaccess

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains;"
</IfModule>

(现在不是预加载)但我不确定是否应将其插入重定向的上方或下方。

我是否应该使用env=https来阻止任何通过http发送HSTS的尝试?

为了进一步复杂化,this article似乎表明我应该有多个重定向,以使整个过程在所有场景中都能正常工作。这篇文章对我来说很有意义,他提出的重定向方案也是如此:

  

http:// example.com→https:// example.com *
  http:// www.example.com→https:// www.example.com *→https:// example.com *
  https:// www.example.com→https:// example.com *

但是我不确定如何在实际的.htaccess中实现类似的东西,而且我有点担心盲目地尝试。

最后,我的各种wordpress插件在.htaccess文件中添加了一堆缓存/安全性内容。重定向是高于还是低于所有这些?

我的规范(和ssl证书)位于https://example.com,因此我希望所有重定向都在那里(但保留请求的剩余slu)),所以example.com/page1应该去到https://example.com/page1

1 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains;"
</IfModule>

只有一个重定向(http-&gt; https没有www)和标题仅在这种情况下