2010-07-05 97 views
1

我在一个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

回答

0

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

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

如果没有这个文件,你必须寻找HTTPS虚拟主机:

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

在你的.htaccess放:

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

这应该这样做,但是,您将最有可能获得一个由于从https重定向仍然意味着使用https连接到主机,因此需要证书才能使用主机名,因此最终用户的证书相关错误。问题在于,您不能在同一个网络接口和端口组合上拥有多个证书(因为在确定请求的主机名之前发送证书)。 – 2010-07-05 12:58:17

+0

现在我再次看了一遍,我不确定这个重写条件是否可行。你很可能需要一个符合https虚拟主机内请求的主机名的条件,而不是在常规域.htaccess中。 – 2010-07-05 13:02:02

+0

如果您试图通过移动文件之间的语句来避免证书错误 - 它不会执行:)在任何重写规则被触发前请求证书,因此将其移至虚拟主机也无济于事。至于如果这可以工作 - 它的工作原理,但我反过来使用它来让用户在需要时使用https。 – bisko 2010-07-05 13:17:31