Назад | Перейти на главную страницу

Правильное создание нескольких виртуальных хостов в Apache (macosx)

У меня возникла странная проблема при попытке определить несколько виртуальных хостов в 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