【问题标题】:.htaccess correctly redirects from HTTP to HTTPS but why does HTTP still work?.htaccess 正确地从 HTTP 重定向到 HTTPS,但为什么 HTTP 仍然有效?
【发布时间】:2017-06-10 15:42:14
【问题描述】:

我在我的htaccess 文件中包含以下代码行,以将用户重定向到我的网站的HTTPS 版本。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} !^www\. [NC]   
    RewriteRule ^(.*)$ https://www\.mysite\.com%{REQUEST_URI} [R=301,L]
</IfModule>

当我在地址栏中输入mysite.com 或www.mysite.com 时,它运行良好并将我发送到HTTPS 版本。 但是,如果我去 Google,搜索我的网站并单击搜索结果中的链接,它仍然会将我带到 HTTP 版本。我对此有 3 个问题。

1) 用户与服务器和我的htaccess 文件联系后,为什么浏览器不自动重定向?

2) 开启HTTPS 后,不应该关闭HTTP 吗?

3) 要完全切换,我需要在 Godaddy 控制面板中使用重定向或类似的东西吗?

非常感谢!

【问题讨论】:

    标签: .htaccess redirect https


    【解决方案1】:

    用途:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} off [OR]
        RewriteCond %{HTTP_HOST} !^www\. [NC]   
        RewriteRule ^ https://www\.mysite\.com%{REQUEST_URI} [R=301,L]
    </IfModule>
    

    使用[OR],因为现在您只重定向 http 而没有 www。
    测试前清除浏览器缓存。

    【讨论】:

    • 很好,我什至没有考虑添加[OR]。有没有关注apache 和.htaccess 的论坛?我正在尝试学习它,但似乎没有太多内容。
    • 这个网站上有很多例子。对于文档和基础示例,Apache 的站点是逻辑上的参考。
    • 我将[OR] 添加到我的.htaccess 中,效果很好。我的网站托管在 Godaddy 上。作为一项实验,我将 [OR] 添加到 Network Solutions 托管的不同站点的 .htaccess 中,并引发错误“重定向过多”。所以...我猜不是所有版本的 Apache 都以相同的方式解释 [OR]。我删除了[OR],它在网络解决方案上再次正常工作。
    • 在Apache 2.0中已经存在了,之前不知道。尝试清除缓存。
    • 问题可能出在%{HTTPS} off 有时这会因 ssl 的实现类型而改变。
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2016-11-11
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多