【问题标题】:Redirect HTTPS to HTTP on localhost only仅在本地主机上将 HTTPS 重定向到 HTTP
【发布时间】:2014-05-23 09:39:59
【问题描述】:

我正在本地开发一个包含 https 链接的网站,因此当我单击其中一个链接时,它会将我带到 https://localhost/...,因为没有安装 SSL 证书,所以它不存在。

有什么我可以添加到.htaccess 来检查我是否在本地主机上,如果是的话将https 重定向到http? .htaccess 文件用于我们服务器上的本地开发和生产,因此我添加的任何内容都不得影响实时网站。

【问题讨论】:

    标签: .htaccess http ssl https localhost


    【解决方案1】:

    没有。

    原因是您在 htaccess 文件中放置的任何规则只有在发出请求后才会应用,这意味着只有在发出 https://localhost/ 请求后才会应用它。如果 localhost 上没有监听 HTTPS 端口 (443),则永远不会应用规则。

    如果端口 443 正在监听 localhost 上的请求,但这只是缺少 SSL 证书的问题,直到执行 SSL 握手之后 才会应用规则,这意味着您仍然会收到有关您的证书的安全警告。

    话虽如此,如果您让 apache 监听端口 443 并安装了证书,您想要的规则是这样的:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^localhost$ [NC]
    RewriteCond %{HTTPS} on
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R]
    

    【讨论】:

    • 啊,我明白了,谢谢你的解释。然后我会考虑安装证书。干杯!
    • @AdamMcElroy 如果您不介意开销(仅适用于本地开发人员),您可以查看mod_proxy_html,这将允许您重写在您的内容中的链接localhost 链接变成了 http 并且你不需要使用 mod_rewrite
    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 2015-04-17
    • 2018-10-12
    • 1970-01-01
    • 2016-07-16
    • 2016-10-10
    • 2012-10-20
    • 2017-06-08
    相关资源
    最近更新 更多