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

Apache - как мне создать исключение для VirtualDocumentRoot виртуального хоста в httpd.conf?

Я новичок в Apache, и мне интересно, есть ли способ настроить VirtualDocumentRoot чтобы создать исключение только для одного из моих хостов на моем локальном сервере. В настоящее время все мои сайты хранятся в папках с условием sitename.dev. В httpd.conf Я динамически устанавливаю VirtualDocumentRoot на основе имени сервера:

# get the server name from the Host: header    
UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /path/to/logs/access.log vcommon
ErrorLog /path/to/logs/errors.log

VirtualDocumentRoot /path/to/vhosts/%0

Это отлично работает для всех моих сайтов за одним исключением ... корень документа для одного из сайтов должен указывать на exception.dev/src/php вместо просто exception.dev.

В соответствии с ответ, который я нашел здесь, это звучит так, как будто VirtualDocumentRoot не может быть установлен на основе условного. Поэтому я надеялся, что мою проблему можно решить, установив какой-либо псевдоним для точки exception.dev в нужный каталог.

Я пробовал добавить VirtualScriptAlias, но это препятствует запуску сервера Apache:

VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php

Я также пробовал то же самое с ScriptAlias и просто Alias, но все равно не повезло.

Что-то мне здесь не хватает? Или то, что я пытаюсь сделать, невозможно? Любая помощь будет принята с благодарностью!

О, и если это поможет, вот мой результат, если я запустил httpd -S:

httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName
VirtualHost configuration:
Syntax OK

ОБНОВИТЬ: Я заставил это работать, изменив ответ Шейна ниже следующим образом:

NameVirtualHost *

<VirtualHost *:80>
    ServerName exception.dev
    DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>

<VirtualHost *:80>
    ServerName default
    ServerAlias *.dev
    VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>

У виртуального хоста с вашей "нормальной" конфигурацией VirtualDocumentRootи еще один с исключением config.

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName default
    ServerAlias *.dev
    VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>

<VirtualHost *:80>
    ServerName exception.dev
    DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>