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

apache / vhosts, как указать, какой проект загружен на 127.0.0.1

Я запускаю MAMP на своей книге Mac и имею много проектов. Я использую сингл httpd-vhosts.conf для всех моих конфигов vhost. В одном из моих приложений мне нужно перенаправление стороннего API на мое приложение по адресу 127.0.0.1/[route]. Мой файл vhosts сопоставляет первый проект с 127.0.0.1 что не обязательно является проектом, на который я хочу перенаправить.

Я хотел бы иметь доступ к любому проекту из localhost или 127.0.0.1 с суффиксом имени проекта, но он сопоставляется только с первым проектом в файле vhost. Временное решение - закомментировать все проекты, кроме того, который я хочу использовать в настоящее время, и перезапустить apache; не лучшее решение.

Итак, я думаю, мой вопрос в том, как я могу включить несколько проектов для использования 127.0.0.1/project_name или похожие.

У вас есть несколько вариантов:

Вариант 1) Настройте единый корень документа vhost со всеми вашими проектами под ним. Таким образом, вы должны настроить / Users / jared / projects /, а затем создать каталог для каждого из ваших проектов (/ Users / jared / projects / project-a, / Users / jared / projects / project-b и т. Д.). Затем в apache вы должны создать один виртуальный хост, например:

<VirtualHost 127.0.0.1:80>
    ServerName localhost
    DocumentRoot /Users/jared/projects
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /Users/jared/projects/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Любые конкретные настройки проекта должны быть выполнены через файлы .htaccess в каждом каталоге проекта. Это наименее продолжительный тип настройки, но может иметь недостатки.

Вариант 2) Настройте разные виртуальные хосты для каждого проекта и используйте файл / etc / hosts для установки доменных имен. Для этого у вас будет файловая структура, похожая на приведенный выше пример, а затем в файл / etc / hosts вы должны добавить эти строки:

127.0.0.1 project-a
127.0.0.1 project-b

Тогда в вашей конфигурации vhost у вас будет это:

<VirtualHost 127.0.0.1:80>
    ServerName project-a
    DocumentRoot /Users/jared/projects/project-a
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /Users/jared/projects/project-a/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

<VirtualHost 127.0.0.1:80>
    ServerName project-b
    DocumentRoot /Users/jared/projects/project-b
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /Users/jared/projects/project-b/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Эта настройка позволит вам иметь различные конфигурации в каждом блоке vhost, а также добавить уникальное ведение журнала для каждого vhost. Обратной стороной этого является то, что для каждого нового проекта вам нужно будет выполнять настройку в / etc / hosts и в конфигурации vhost.