无法确定一个网站如何重定向到另一个网站

时间:2016-01-08 16:18:19

标签: apache .htaccess redirect ssl dns

我有一个奇怪的问题,我无法确定原因。

有两台服务器托管两个不同的站点。这两个站点都是基于PHP的应用程序。

服务器1(Ubuntu)

https://app.site1.com

服务器已为此站点启用了SSL。这个网站运行正常。

服务器2(红帽)

http://app.site2.com

服务器未为此站点启用SSL。

以下是发生的事情:

  • 如果我在http://上访问网站2,它可以正常工作。
  • 如果我在https://上访问站点2,则会重定向到另一台服务器上的站点1。

现在显然有一些东西告诉这个子域名在通过SSL提供时转到其他站点。

我检查了什么:

  • 两台服务器上的所有虚拟主机
  • 两台服务器上的所有DNS记录
  • 所有站点2网站代码
  • 网站2 .htaccess文件
  • 使用未缓存的浏览器

我可以找到任何一台服务器上的NOTHING,告诉站点2重定向到站点1,仅在HTTPS上。现在显然我不希望任何人直接找到问题,因为你无法看到我的整个服务器配置,但是我正在寻找关于此重定向可能来自哪里的建议

1 个答案:

答案 0 :(得分:1)

如果您将site1和site2托管在同一台服务器上,我就能理解这一点。

基本上如果你没有为https(端口443)上的第二个vhost设置配置,那么Apache将默认回退到第一个vhost。

因此,如果两个站点都在同一个Apache配置中,则可能就是这样。但你说他们不是。您确定不是从同一台服务器提供这两个站点(可能在另一台服务器上有副本)吗? IP地址是否相同?两台服务器前面是否有负载均衡器或CDN基础设施?

另外你说"如果我访问https://上的站点2,它会重定向到另一台服务器上的站点1。"你能解释一下这里发生的事情吗?如果您转到站点2并且没有设置https,那么这甚至如何响应此请求?向初始请求提交了什么证书(即之前重定向)?它是site1证书吗?如果是这样,那么您在浏览器中是否会出现证书错误(因为它为您请求的网站提供了错误的证书),您必须在重定向之前点击该错误?或者证书对这两个网站都有效吗?

您还可以使用此openssl命令查看服务器返回的内容(特别是它返回的证书):

openssl s_client -connect app.site2.com:443

查看浏览器开发人员工具并了解重定向的确切方式也很方便。在Chrome中按F12,转到网络选项卡,单击保留日志,然后转到https://app.site2.com/。第一个要求是什么?它是301还是302(即服务器端重定向)?或者,如果它是200后跟https://app.site1.com/,则某些JavaScript必须导致重定向。

一旦您回答了这些问题,就有可能提供进一步的指导。