Проблема с виртуальными хостами apache на windows - объясните пожалуйста

Эта проблема никогда не возникала в прошлом (я пробовал это много раз), но на этот раз,

ВСЕ виртуальные хосты, определенные в файле virtual-hosts.conf в каталоге установки apache, направляют браузер в каталог documentRoot сервера apache.

Я использую Windows 7 с последней версией Apache.

Это виртуальные хосты, определенные

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, меня направляют в documentRoot apache, определенный в httpd.conf.

Пожалуйста помоги.

2 ответа

Я никогда не видел несколько

  <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>

Файл, который вы определили те <VirtualHost> блоки in не включаются в вашу конфигурацию (если в конфигурации службы не указан пользовательский путь конфигурации в его командной строке - проверьте это в оснастке MMC служб).

Если содержимое, которое вы разместили, является полным содержимым файла, тогда будет безопасно включить его непосредственно из вашей основной конфигурации.

Include /path/to/virtual-hosts.conf

Или, если virtual-hosts.conf файл содержит все основные настройки сервера, которые есть в вашем основном конфигурационном файле, тогда он может быть предназначен для замены текущего основного конфигурационного файла?

Другой вариант - просто поместить конфигурацию vhosts в основной файл конфигурации, а не в файл конфигурации virtualhosts, в котором они находятся в данный момент.

Другие вопросы по тегам