在Windows上的Apache虚拟主机问题 – 请解释

这个问题从来没有发生过(我已经尝试了很多次),但是这一次,

在apache安装目录的virtual-hosts.conf文件中定义的所有虚拟主机将浏览器指向apache服务器documentRoot目录。

我正在使用最新版本的Apache的Windows 7。

这些是定义的虚拟主机

NameVirtualHost *:80 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerName dev.a.local ServerAlias dev.a.local DocumentRoot "D:/wwwroot/a/public" ErrorLog "logs/a.log" CustomLog "logs/a-access.log" common <Directory "D:/wwwroot/a/public"> Options Indexes FollowSymLinks AllowOverride All # Controls who can get stuff from this server. Order allow,deny Allow from all DirectoryIndex index.php </Directory> </VirtualHost> <VirtualHost *:80> ServerName dev.b.local ServerAlias dev.b.local DocumentRoot "D:/wwwroot/b/public" ErrorLog "logs/b.log" CustomLog "logs/b-access.log" common <Directory "D:/wwwroot/b/public"s> Options Indexes FollowSymLinks AllowOverride All # Controls who can get stuff from this server. Order allow,deny Allow from all DirectoryIndex index.php </Directory> </VirtualHost> 

我已经修改了主机文件并添加了

 127.0.0.1 dev.a.local 127.0.0.1 dev.b.local 

当我尝试访问dev.a.local或dev.b.local时,我将其定向到httpd.conf中定义的apache的documentRoot。

请帮忙。

我从来没有见过多个

  <VirtualHost *:80> 

以前的条目,如果这实际上分开了stream量,将是非常惊讶。 此外,设置一个serverAlias相同的servername是绝对多余的。 而你的例子不显示serverRootconfiguration(希望这不同于documentRoot或你将有大问题)。 尝试:

 NameVirtualHost *:80 <VirtualHost dev.a.local> DocumentRoot "D:/wwwroot/a/public" ErrorLog "logs/a.log" CustomLog "logs/a-access.log" common <Directory "D:/wwwroot/a/public"> Options Indexes FollowSymLinks AllowOverride All # Controls who can get stuff from this server. Order allow,deny Allow from all DirectoryIndex index.php </Directory> </VirtualHost> <VirtualHost dev.b.local> DocumentRoot "D:/wwwroot/b/public" ErrorLog "logs/b.log" CustomLog "logs/b-access.log" common <Directory "D:/wwwroot/b/public"> Options Indexes FollowSymLinks AllowOverride All # Controls who can get stuff from this server. Order allow,deny Allow from all DirectoryIndex index.php </Directory> </VirtualHost> 

您定义这些<VirtualHost>块的文件没有被包含在您的configuration中(除非服务configuration是在其命令行中定义一个自定义configurationpath – 在服务MMCpipe理单元中validation)。

如果您发布的内容是文件的全部内容,那么直接从主configuration中包含它应该是安全的。

 Include /path/to/virtual-hosts.conf 

或者,如果virtual-hosts.conf文件包含主要configuration文件中的所有基本服务器设置,那么它可能是作为当前主要configuration文件的插入replace文件?

另一个select是把主机configuration文件中的虚拟主机configuration,而不是你当前拥有它们的虚拟主机configuration文件。