我在Apache Web服务器上托pipe了多个站点。
站点A是HTTPS,站点B是HTTP。
当用户使用HTTPS访问站点B时(我不知道他们为什么这么做,因为没有HTTPS,从来不是,但他们是这样做的),他们被引导到站点A.我怎样才能解决这个问题,并让他们继续网站B?
不幸的是,在用户到达您的Web服务器(在DNS或其他)之前,无法捕捉到这一点。 创build一个虚拟主机来处理https请求SITEB并将其redirect到http。
您也可以使用SITEA https虚拟主机中的rewritecond / rewriterule做同样的事情。
本质上是以下内容: http : //wiki.apache.org/httpd/RedirectSSL
发生这种情况的原因是,您的域都是由相同的httpd进程提供的。 在您的server / vhostconfiguration中,侦听端口443的configuration部分仅适用于SITEA。
用户可能正在访问https的SITEB,因为httpseverywhere(或同等的)浏览器插件,它们将其redirect到https版本的网站。 现在,当他们访问https://site-b.com ,apache服务器(因为SITEB指向你的机器的IP)寻找有关端口443的configuration; 并开始提供SITEA页面。
我build议你开始通过HTTPS( letsencrypt FTW)为你的客户提供你的网站,而不是从httpsredirect到http。 或者,您可以在Apache的SITEA Vhostconfiguration中添加以下规则集:
RewriteEngine On RewriteCond %{HTTP_HOST} SITEB [NC] RewriteRule ^ http://SITEB%{REQUEST_URI} [R=301,L]