Apache子域和主机重写

所以这里是我想要做的基础。 我有2个服务器,一个现场和一个开发。 Live有2个域名连接到它。 为了简单起见,我们将把它们称为a.live.com和b.live.com。 开发者有一个公共的IP地址,但是没有附加主机。 所以我可以访问开发11.22.33.44,但我实际上不能使用主机名来访问它。 (域显然只指向活服务器)

我刚刚创build了开发服务器,但是我无法访问这两个子域。 我的机器上有一个主机文件设置,指向主机的域名:

11.22.33.44 a.live.com 11.22.33.44 b.live.com 

我启用了这两个站点(它们都出现在/ etc / apache2 / sites-enabled),但是由于某种原因,每当我去b.live.com它尝试访问我的开发服务器中的a.live.com。 所以我知道主机正确指向正确的服务器。 此外,当我禁用a.live.com然后b.live.com正确去到正确的子域。 所以它看起来好像阿帕奇以某种方式采取我所投入的任何领域,并以某种方式sorting他们想要的顺序…这是我的虚拟主机文件的一个例子

 <VirtualHost *:80> ServerName a.live.com DocumentRoot /var/www/a/ <Directory /> Options FollowSymLinks AllowOverride all </Directory> </VirtualHost> 

b虚拟主机文件是完全一样的,但有明显的变化。

一些额外的注意事项:开发使用Apache 2.4,而实际使用2.2这就是为什么我不能只复制和粘贴的东西= /(我们计划最终推到2.4,但我们首先想运行一个开发服务器,并确保一切正常正确)

任何帮助将不胜感激。 我不熟悉Apache重写,所以不知道我是否做错了什么。

我已经做了一些关于服务器故障的search,以下是一些常见问题的答案:我跑了

 apachectl restart 

改变了一切后。 (从我所知道的优雅有时会错过的东西,所以我做了一个完全重启,而不是)我也跑了configtest,它说,语法是好的

先谢谢你。

总结是有点误导,是build议一个Apache的mod_rewrite问题,而事实并非如此。

你的主httpd.conf是否启用NameVirtualHosts?

 NameVirtualHost *:80 

如果启用:

要进一步分析,请启用Apache日志logging。 每个虚拟主机都应该login到不同的日志文件,并尝试使用一些debugging选项从客户端访问服务器,例如使用curl:

 curl -vvv http://a.live.com/ curl -vvv http://b.live.com/ 

通过这种方式,您可以发现,您的客户端实际连接到哪个IP以及该IP上的哪个虚拟主机真的可以访问。