【问题标题】:Rewrite from https to http从 https 重写为 http
【发布时间】:2011-03-11 21:40:23
【问题描述】:

我在一台 apache 服务器上有 5 个站点。其中一个站点使用 SSL。因此,当使用 https 访问其他站点时,它们会被重定向到不正确的 SSL 站点。

例如

https://x.com (with SSL)

http://y.com (normal site no SSL)

如果我访问https://y.com,那么我会从 x.com 获取内容。我该如何解决https://y.com 只是被重写为http://y.com

【问题讨论】:

    标签: apache http drupal https rewrite


    【解决方案1】:

    在你的 .htaccess 中放置:

    RewriteCond %{HTTPS} on [NC]
    RewriteRule ^(.*)$ http://y.com/$1 [R=301,L]
    

    【讨论】:

    • 应该这样做,但是,您很可能会为最终用户收到与证书相关的错误,因为从 https 重定向仍然意味着使用 https 连接到主机,这需要主机名的证书正在使用。问题是您不能在同一个网络接口和端口组合上拥有多个证书(因为证书是在确定请求的主机名之前发送的)。
    • 现在我又看了一遍,我不确定这个重写条件是否可行。您更可能需要一个与您的 https 虚拟主机中请求的主机名相匹配的条件,而不是在您的常规域 .htaccess 中。
    • 如果您试图通过在文件之间移动语句来逃避证书错误 - 它不会这样做:) 在触发任何重写规则之前请求证书,因此将其移动到虚拟主机不会也帮不上忙。至于这是否可以工作 - 它可以工作,但我在需要时使用它来让用户使用 https。
    【解决方案2】:

    您可以在 apache 配置文件中定义它。您必须为从 https 端口传入的连接添加规则。

    如果您使用的是 linux,则可能您在 /etc/apache2/sites-available/default-ssl 中有此配置。

    如果你没有这个文件,你必须搜索 https 虚拟主机:

    <IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 2014-07-18
      • 2012-07-23
      • 2015-01-10
      • 2014-03-04
      • 2014-12-09
      • 2010-12-04
      • 2015-02-11
      相关资源
      最近更新 更多