从https重写到http
问题描述:
我在一个apache服务器上有5个站点。其中一个网站使用SSL。所以当其他网站用https访问时,它们会被重定向到不正确的SSL网站。从https重写到http
E.g.
https://x.com (with SSL)
http://y.com (normal site no SSL)
如果我访问
https://y.com
然后我从x.com内容。我该如何修复,所以https://y.com
只是被重写为http://y.com
?
答
你可以在apache配置文件中定义它。您必须将规则添加到https端口传入的连接。
如果您使用的是linux,可以推荐您在/etc/apache2/sites-available/default-ssl
中使用此配置。
如果没有这个文件,你必须寻找HTTPS虚拟主机:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
答
在你的.htaccess放:
RewriteCond %{HTTPS} on [NC]
RewriteRule ^(.*)$ http://y.com/$1 [R=301,L]
这应该这样做,但是,您将最有可能获得一个由于从https重定向仍然意味着使用https连接到主机,因此需要证书才能使用主机名,因此最终用户的证书相关错误。问题在于,您不能在同一个网络接口和端口组合上拥有多个证书(因为在确定请求的主机名之前发送证书)。 – 2010-07-05 12:58:17
现在我再次看了一遍,我不确定这个重写条件是否可行。你很可能需要一个符合https虚拟主机内请求的主机名的条件,而不是在常规域.htaccess中。 – 2010-07-05 13:02:02
如果您试图通过移动文件之间的语句来避免证书错误 - 它不会执行:)在任何重写规则被触发前请求证书,因此将其移至虚拟主机也无济于事。至于如果这可以工作 - 它的工作原理,但我反过来使用它来让用户在需要时使用https。 – bisko 2010-07-05 13:17:31