У меня возникла странная проблема при попытке определить несколько виртуальных хостов в 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, я получу сообщение «Forbidden, You don't have permission to access /project/ on this server». Если я захочу получить доступ к любому из этих проектов, мне нужно удалить все определения VirtualHost в файле httpd.conf.
Что я делаю не так?
В моем случае это (определенные в VirtualHost) проекты PHP с Zend Framework. Я использую MacOSX.
Спасибо
решение1
вам не хватает
NameVirtualHost *:8888
и
<VirtualHost _default_:8888>
DocumentRoot /www/default
</VirtualHost>
Для получения дополнительной информации о виртуальном хосте Apache по умолчанию вы можете прочитать этот онлайн-документ.
http://httpd.apache.org/docs/2.2/vhosts/examples.html