Apache - Разница между VirtualDocumentRoot и DocumentRoot?
Мне было очень трудно найти этот ответ после часа (да, часа) поиска в Google и просмотра нескольких сообщений на stackexchange и нескольких других форумах... даже через документацию Apache!
Я не мог на всю жизнь найти разницу между этими двумя, добавить, что я довольно неопытен с Apache.
Я сталкивался с этим, когда искал альтернативные решения для создания dev-сервера для PHP и MySQL на моей локальной машине. Я следовал этому уроку:
https://mallinson.ca/osx-web-development/
... который упоминает "VirtualDocumentRoot", но не указывает, почему это лучший (правда?) выбор по сравнению с DocumentRoot.
Любые ссылки или ссылки на то, где я мог бы найти документацию по этому вопросу, были бы очень признательны. Спасибо!
Примечание: ближе всего к документации я нашел только DocumentRoot http://httpd.apache.org/docs/2.4/mod/core.html
3 ответа
DocumentRoot - это стандартная директива Apache. В зависимости от контекста, в котором он используется, он задает для глобального корня документа или корня документа виртуального хоста фиксированный путь.
VirtualDocumentRoot - это директива для модуля Apache mod_vhost_alias. Он устанавливает корень документа в динамический путь, который может содержать переменные, которые оцениваются при обработке фактического запроса. Таким образом, эффективный корень документа может зависеть от фактического имени хоста и запрошенного номера порта, без определения отдельных виртуальных хостов для всех комбинаций.
DocumentRoot может быть установлен только на 1 значение для настроенного VirtualHost.
VirtualDocumentRoot позволяет использовать один виртуальный хост, который якобы обрабатывает трафик для множества несвязанных доменов и действует так, как если бы каждый домен указывал на уникальный корень документа.
Насколько я понимаю, разница заключается в том, что DocumentRoot больше похож на глобальную переменную для использования в конфигурационном файле apache, это единственный varable, который объявляет глобальный корень для веб-корня.
VirtualDocumentRoot используется, когда вы определяете Virtualhost как вложенную переменную внутри, и не может выступать в качестве единственной переменной. Как следует из названия, это корень документа для виртуального хоста
Таким образом, простым языком DocumentRoot является глобальным корнем для конфигурации Apache, а VirtualDocumentRoot является корнем для виртуального хоста.