这个问题以前从来没有发生过(我试过很多次),但是这次,
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>
我修改了 hosts 文件并添加了
127.0.0.1 dev.a.local
127.0.0.1 dev.b.local
当我尝试访问 dev.a.local 或 dev.b.local 时,我被定向到 httpd.conf 中定义的 apache 的 documentRoot。
请帮忙。
答案1
我从未见过多个
<VirtualHost *:80>
条目之前,如果这真的将流量分开,我会非常惊讶。此外,将 serverAlias 设置为与服务器名称相同肯定是多余的。并且您的示例未显示 serverRoot 配置(希望这与 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>
答案2
您定义这些块的文件<VirtualHost>
未包含在您的配置中(除非服务配置在其命令行中定义自定义配置路径 - 在服务 MMC 管理单元中验证)。
如果您发布的内容是文件的全部内容,那么直接从主配置中包含它应该是安全的。
Include /path/to/virtual-hosts.conf
或者,如果该virtual-hosts.conf
文件包含主配置文件中的所有基本服务器设置,那么它可能被设计为当前主配置文件的替代品?
另一种选择是将 vhosts 的配置放在主配置文件中,而不是当前所在的虚拟主机配置文件中。