.htaccess hsts,301s http www至https://canonical htaccess

.htaccess hsts,301s http www至https://canonical htaccess,.htaccess,redirect,hsts,.htaccess,Redirect,Hsts,评论1:我是stackoverflow的新手,我不是真正的程序员,所以如果我做错了,请原谅我。(我现在大喊“该死的吉姆,我是医生而不是编码员!” 评论2:我试着做家庭作业,但由于我不是一名程序员,我在找出问题的确切答案时遇到了一些困难。如果我错过了什么,请告诉我,希望这不会浪费任何人的时间 最终的目标是加快和保护我的网站。这一切都应该通过https 我注意到,如果我直接在测试仪中键入“https://”,我的(wordpress)网站速度测试会快得多(加载时间=1-2s vs 5-8s)。瀑布表

评论1:我是stackoverflow的新手,我不是真正的程序员,所以如果我做错了,请原谅我。(我现在大喊“该死的吉姆,我是医生而不是编码员!”

评论2:我试着做家庭作业,但由于我不是一名程序员,我在找出问题的确切答案时遇到了一些困难。如果我错过了什么,请告诉我,希望这不会浪费任何人的时间

最终的目标是加快和保护我的网站。这一切都应该通过https

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

我希望通过在.htaccess中提供重定向,我的站点速度将接近直接键入“https://”时看到的速度


这一切让我调查了.htaccess中的HST和301重定向。似乎有很多不同的方法来做这些重定向,我不知道有什么区别

例如,这是否更好:


然后我在varvy上找到了.htaccess
https://varvy.com/pagespeed/hsts.html

我想添加到.htaccess

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

Header set Strict Transport Security“最大年龄=10886400;包括子域
(现在不预加载)但我不确定是否应该将其插入重定向的上方或下方

我应该使用
env=https
来防止任何通过http发送HST的尝试吗

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

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
,因此我希望所有重定向都在那里结束(但保留请求的剩余片段),因此example.com/page1应该转到

您可以使用:

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>
重新编写引擎打开
重写cond%{HTTP_HOST}^www\(.+)[NC]
重写规则^https://%1%{REQUEST_URI}[NE,L,R=301]
重写条件%{HTTPS}关闭
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[NE,L,R=301]
Header set Strict Transport Security“最大年龄=10886400;包括子域

只有一个重定向(http->https,不带www)和标题(在本例中)

感谢您的回答。我在努力理解。第一个条件将包含“www.{string}”的任何字符串重定向到https://{string}?第二个条件是将任何非https重定向到https?是的,就是这样
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains;"
</IfModule>
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>