Мне было очень трудно найти этот ответ после часа (да, часа) поиска в 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 - это корень виртуального хоста.