Проблема с виртуальными хостами 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, в котором они находятся в данный момент.