Apache 奇怪的重定向问题

Apache 奇怪的重定向问题

几天前,我对我的 Apache 做了一些更改,它的行为变得很奇怪。

对于 VirtualHost,我有 1 个条目

<VirtualHost *:80>
  ServerName siteA.com
  ...
  <Directory "/path/to/siteA.com">
  </Directory>
</VirtualHost>

然后添加第二个:

<VirtualHost siteB.com:80>
  ServerName siteB.com
  ...
  <Directory "/path/to/siteB.com">
  </Directory>
</VirtualHost>

如您所见,我将 *:80 替换为实际名称。结果是,如果您输入 siteA.com,您最终会看到 siteB.com 内容。地址栏仍会一直显示 siteA.com……但这是 siteB.com 内容。

(我之前关于为什么会发生这种情况的问题已经得到解答了..这是一个新问题)

我想以以下方式针对 3 个站点重现此行为:

siteA.com shows siteA.com <--- normal
siteB.com shows siteC.com <--- not normal
siteC.com shows siteC.com <--- normal

我所做的所有尝试最终都使所有站点都指向命名域。

我怎样才能做到这一点?

谢谢。

引用

答案1

您的 VirtualHost 指令需要与您的 NameVirtualHost 指令匹配。如果您有

NameVirtualHost *:80

然后他们都必须使用

<VirtualHost *:80>

如果你混淆了基于名称和基于 IP 的虚拟主机,那么你应该在所有地方使用实际的 IP 地址,而不是*。请参阅注释这里

答案2

使用您的示例和 DerfK 所说的内容,您可以DocumentRoot向每个<VirtualHost *:80>部分添加指令,然后使DocumentRoot“SiteB.com”站点指向/path/to/siteC.com

<VirtualHost *:80>
  ServerName siteA.com
  DocumentRoot /path/to/siteA.com
  ...
  <Directory "/path/to/siteA.com">
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName siteB.com
  DocumentRoot /path/to/siteC.com
  ...
  <Directory "/path/to/siteC.com">
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName siteC.com
  DocumentRoot /path/to/siteC.com
  ...
  <Directory "/path/to/siteC.com">
  </Directory>
</VirtualHost>

相关内容