hsts, 301s http www to https:// canonical htaccess
hsts, 301s http www to https:// canonical htaccess
评论1:我是Whosebug的新手,我不是真正的程序员,所以如果我做错了,请原谅我。 (我现在非常大喊大叫"dammit Jim, I'm a doctor not a coder!")
评论 2:我尝试做作业,但由于我不是程序员,所以我很难找到问题的确切答案。如果我遗漏了什么,请告诉我,希望这不会浪费任何人的时间。
最终目标是加速和保护我的网站。它应该全部通过 https。
我注意到,如果我直接在测试仪中输入 "https://",我的 (wordpress) 网站速度测试要快得多(加载时间 = 1-2 秒对 5-8 秒)。瀑布表明需要很长时间才能将 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/ [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 文件添加了一堆 caching/security 内容。重定向是高于还是低于所有这些?
我的规范(和 ssl 证书)位于 https://example.com
,所以我希望所有重定向都在那里结束(但保留请求的其余部分),例如。com/page1应该去 https://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>
只有一个重定向(没有 www 的 http->https)并且 header 仅在这种情况下
评论1:我是Whosebug的新手,我不是真正的程序员,所以如果我做错了,请原谅我。 (我现在非常大喊大叫"dammit Jim, I'm a doctor not a coder!")
评论 2:我尝试做作业,但由于我不是程序员,所以我很难找到问题的确切答案。如果我遗漏了什么,请告诉我,希望这不会浪费任何人的时间。
最终目标是加速和保护我的网站。它应该全部通过 https。
我注意到,如果我直接在测试仪中输入 "https://",我的 (wordpress) 网站速度测试要快得多(加载时间 = 1-2 秒对 5-8 秒)。瀑布表明需要很长时间才能将 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/ [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 文件添加了一堆 caching/security 内容。重定向是高于还是低于所有这些?
我的规范(和 ssl 证书)位于 https://example.com
,所以我希望所有重定向都在那里结束(但保留请求的其余部分),例如。com/page1应该去 https://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>
只有一个重定向(没有 www 的 http->https)并且 header 仅在这种情况下