首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSTS和重定向

HSTS和重定向
EN

Stack Overflow用户
提问于 2018-09-08 16:25:11
回答 1查看 1.6K关注 0票数 2

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

错误: HTTP首先重定向到www 在添加www子域之前,http://example (HTTP)应该立即重定向到https://example (HTTPS)。现在,第一个重定向是到https://www.example。需要额外的重定向,以确保任何支持HSTS的浏览器都会记录顶级域的HSTS条目,而不仅仅是子域。

据我所知,要使重定向有效,就应该这样做:

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

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

代码语言:javascript
复制
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

在这里插入另一个重定向是否可能/可取?有什么风险吗?

如有任何评论/建议/建议/烂番茄,我们将不胜感激:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 07:29:19

评论摘要:

  • 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. 不应用Rewriterule,Apache将响应请求。

为什么要这样做?它涵盖了所有案件。如果客户端的第一个请求已经是https://example.com,那么上述场景将从步骤4开始。

示例配置可能如下所示:

代码语言:javascript
复制
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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52237181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档