gpt4 book ai didi

apache - HSTS 和重定向

转载 作者:行者123 更新时间:2023-12-05 07:30:30 25 4
gpt4 key购买 nike

我在这里测试我的网站https://hstspreload.org我得到了这个错误:

Error: HTTP redirects to www first

http://example (HTTP) should immediately redirect to https://example (HTTPS) before adding the www subdomain. Right now, the first redirect is to https://www.example. The extra redirect is required to ensure that any browser which supports HSTS will record the HSTS entry for the top level domain, not just the subdomain.

据我所知,有效的重定向应该以这种方式完成:

  1. http://example (这是用户在地址栏中输入的内容)
  2. https://example (首先重定向到 HTTPS)
  3. https://www.example (第二次重定向,到子域 www)

目前,这是导致重定向的我的 htaccess 代码:

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

是否可以/建议在此处插入另一个重定向?有什么风险吗?

欢迎任何评论/建议/建议/烂番茄:-)

最佳答案

评论总结:

  • 从上到下读取 httpd.conf 和 .htaccess 中的配置。
  • 对于 RewritRules,它们按顺序应用,从上到下,直到到达最后一个。应用符合条件的所有规则。
  • 为防止这种情况发生,您可以[L] 标记添加到 RewriteRule。这个标签告诉 Apache,如果它符合条件,它就是最后应用的规则。此请求将忽略所有其他规则。

这里重写的顺序是:

  1. 客户端请求http://example.com
  2. RewriteRule 将客户端重定向到 https://example.com
  3. 客户端返回 https://example.com
  4. 第二个 RewriteRule 将客户端重定向到 https://www.example.com
  5. 客户端返回 https://www.example.com
  6. 不适用重写规则,Apache 响应请求。

为什么要这样做?它涵盖了所有情况。如果客户端的第一个请求已经是 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>

关于apache - HSTS 和重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com