我在https://hstspreload.org这里测试我的网站,但出现此错误:
错误:HTTP首先重定向到www
http://example(HTTP)应该立即重定向到https://example (HTTPS),然后再添加www子域。现在,第一个重定向 是https://www.example。需要额外的重定向以确保 任何支持HSTS的浏览器都会记录以下内容的HSTS条目: 顶级域,而不仅仅是子域。
据我了解,有效的重定向应通过以下方式进行:
此刻,这是我的htaccess
代码导致重定向:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
是否可以/建议在此处插入另一个重定向?有风险吗?
任何评论/建议/建议/烂番茄:-)
答案 0 :(得分:0)
评论摘要:
[L]
标签添加到RewriteRule中。这个标签告诉Apache,如果符合条件,这是最后一条适用的规则。此请求将忽略所有其他规则。此处的重写顺序为:
http://example.com
https://example.com
https://example.com
https://www.example.com
https://www.example.com
为什么要这样?它涵盖了所有情况。如果客户的第一个请求已经是https://example.com
,则上述情况将从步骤4开始。
示例配置如下:
Listen *:80
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
[... OTHER CONFIGURATION ...]
</VirtualHost>
Listen *:443
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
[... OTHER CONFIGURATION ...]
</VirtualHost>