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

Apache - разница между VirtualDocumentRoot и DocumentRoot?

Мне было очень трудно найти этот ответ после часа (да, часа) поиска в Google и просмотра нескольких сообщений на stackexchange и нескольких других форумах ... даже через документацию Apache!

Я мог бы не хоть убей, найди, в чем разница между этими двумя, добавь к тому, что я довольно неопытен с Apache.

Я столкнулся с этим, когда искал альтернативные решения для создания сервера разработки для PHP и MySQL на моем локальном компьютере. Я следил за этим руководством:

https://mallinson.ca/osx-web-development/

... в котором упоминается "VirtualDocumentRoot", но не уточняется, почему это лучший (так ли?) выбор по сравнению с DocumentRoot.

Будем очень признательны за любые зацепки или ссылки на то, где я могу найти документацию по этому поводу. Спасибо!

Примечание: ближе всего к документации я нашел только DocumentRoot. http://httpd.apache.org/docs/2.4/mod/core.html#documentroot

DocumentRoot это стандартная директива Apache. В зависимости от контекста, в котором он используется, он устанавливает для глобального корня документа или корневого каталога документа виртуального хоста фиксированный путь.

VirtualDocumentRoot - это директива для модуля Apache mod_vhost_alias. Он устанавливает в корне документа динамический путь, который может содержать переменные, которые оцениваются при обработке фактического запроса. Таким образом, эффективный корень документа может зависеть от фактического имени хоста и запрошенного номера порта, без определения отдельных виртуальных хостов для всех комбинаций.

DocumentRoot можно установить только на 1 значение для каждого настроенного VirtualHost.

VirtualDocumentRoot позволяет не замужем виртуальный хост, который якобы обрабатывает трафик для множества несвязанных доменов и действует так, как будто каждый домен указывает на уникальный корневой каталог документов.

Я понимаю разницу в том, что DocumentRoot больше похож на глобальную переменную для использования в файле конфигурации apache, это единственная переменная, которая объявляет глобальный корень для веб-корня.

VirtualDocumentRoot используется, когда вы определяете Virtualhost как вложенную переменную внутри и не может выступать в качестве единственной переменной. Как следует из названия, это корень документа для виртуального хоста.

Проще говоря, DocumentRoot - это глобальный корень конфигурации apache, а VirtualDocumentRoot - это корень виртуального хоста.