Windows 上的 apache 虚拟主机问题 - 请解释

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>

我修改了 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 的配置放在主配置文件中,而不是当前所在的虚拟主机配置文件中。

相关内容