Apache-VirtualDocumentRoot 和 DocumentRoot 之间的区别?

Apache-VirtualDocumentRoot 和 DocumentRoot 之间的区别?

经过一个小时(是的,一个小时)的谷歌搜索和浏览 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

答案1

文档根目录是标准的 Apache 指令。根据其使用的上下文,它将全局文档根目录或虚拟主机的文档根目录设置为固定路径。

虚拟文档根是 Apache 模块 mod_vhost_alias 的指令。它将文档根目录设置为动态路径,该路径可能包含处理实际请求时评估的变量。这样,有效文档根目录就可以依赖于请求的实际主机名和端口号,而无需为所有组合定义单独的虚拟主机。

答案2

每个配置的 VirtualHost 只能将 DocumentRoot 设置为 1 个值。

VirtualDocumentRoot 允许单身的虚拟主机,表面上处理许多不相关域的流量,并且好像每个域都指向唯一的文档根目录。

答案3

我对差异的理解是,DocumentRoot 更像是 apache 配置文件中使用的全局变量,它是一个声明 Web 根目录的全局根目录的单一变量。

当您定义 Virtualhost 时,会使用 VirtualDocumentRoot,它是内部的嵌套变量,不能作为单个变量。顾名思义,它是虚拟主机的文档根目录

因此,简单地说,DocumentRoot 是 apache 配置的全局根,而 VirtualDocumentRoot 是虚拟主机的根。

相关内容