У меня возникла странная проблема при попытке определить несколько виртуальных хостов в Apache. Это мой код для файла httpd.conf:
<VirtualHost *:8888>
ServerName site1.local
DocumentRoot /Applications/MAMP/htdocs/site1/public
<Directory /Applications/MAMP/htdocs/site1/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:8888>
ServerName site2.local
DocumentRoot /Applications/MAMP/htdocs/site2/public
<Directory /Applications/MAMP/htdocs/site2/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Когда я пытаюсь получить доступ к site2.local в браузере, я перенаправляюсь на site1.local. Это произойдет со всеми определениями VirtualHost, которые я вставляю ниже в файл httpd.conf. Когда я хочу получить доступ к site2.local или любому другому, мне нужно поместить его определение VirtualHost наверху (как первое). Итак, я предполагаю, что Apache правильно выполняет только первый VirtualHost.
Также есть еще одна проблема: если я попытаюсь получить доступ к любому файлу проекта в моей папке htdocs, который не определен в VirtualHost, я получу сообщение «Запрещено, у вас нет разрешения на доступ / проект / на этом сервере». Если я хочу получить доступ к любому из этих проектов, мне нужно удалить все определения VirtualHost в файле httpd.conf.
Что я делаю не так?
В моем случае это (определенные в VirtualHost) проекты PHP с Zend Framework. Я использую MacOSX.
Спасибо
вам не хватает
NameVirtualHost *:8888
и
<VirtualHost _default_:8888>
DocumentRoot /www/default
</VirtualHost>
Для получения дополнительной информации о виртуальном хосте apache по умолчанию вы можете прочитать этот онлайн-документ
http://httpd.apache.org/docs/2.2/vhosts/examples.html