Я новичок в 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>