【问题标题】:http://domain to https://www in one redirecthttp://domain 到 https://www 一次重定向
【发布时间】:2014-08-02 14:45:19
【问题描述】:

我正在使用单个域证书(仅在 www. 子域上)并且希望所有用户都使用它。

目前我的 htaccess 文件中有以下内容:

## force HTTPS and www. if any of them are not already present
RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

但问题是,这似乎导致了两个单独的重定向:

http://domain.com -> https://domain.com -> https://www.domain.com

这意味着用户需要 3 个 RTT,直到他到达正确的页面。此外,只有第二个重定向似乎是永久的,第一个(http 到 https)似乎是临时的,

有没有直接将http请求发送到https+www的解决方案?

提前非常感谢!

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    只有一个重定向。目标 https://www.%1。没有重定向到http://www.%1,也没有重定向到https://%1。只有https://www.%1

    不知道您是如何得出此规则导致 2 次不同重定向的结论的。这是您的访问日志所说的吗?还是浏览器的网络控制台?

    【讨论】:

    • 这是浏览器网络控制台和提琴手所说的......我也很惊讶。第一个响应标头告诉我它位于 https:// domain.com,第二个响应标头告诉我它位于 https:// www。 domain.com.
    • @landi 你确定没有其他东西在重定向吗?另一个规则或 mod_alias 指令?面板?这不是这个重写规则造成的。
    • 是的,我确定。我删除了其他所有内容(当然 RewriteEngine On 除外)
    • @landi 你清除了浏览器的所有缓存?
    • 是的,我做到了。如果你愿意,你可以测试它(只是谷歌的tverie,希望它不会这样算作广告,否则我很抱歉,我会删除这条评论)
    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 2018-09-26
    • 2014-05-08
    • 2016-01-20
    • 1970-01-01
    • 2016-02-28
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多