虚拟主机的文件夹名称是否必须与域名相同?

虚拟主机的文件夹名称是否必须与域名相同?

我正在学习如何在 apache2 上创建虚拟主机。我有 Ubuntu 16.04 操作系统。我在 Windows 10 中也有 WSL(Ubuntu 16.04)。

现在,这是我在创建虚拟主机时观察到的Ubuntu 操作系统

我创建了以下 VH:

#Did work
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/xyzvk.com
</VirtualHost>

#Didn't work
<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/yolo
</VirtualHost>

并添加了名称和别名/etc/hosts

当我在浏览器中访问该 URL 时,一切正常。

现在,当我更改 DocumentRoot 并重新启动服务器并再次尝试时,它根本不起作用。它让我进入默认根目录,即/var/www/html

使用 WSL

我执行了相同的步骤,除了 hosts 文件,我在 Windows hosts 文件中编辑了它,因为在 Ubuntu 的 hosts 文件中进行更改不起作用(可能是因为它是 Windows 操作系统)。

这次,无论目录名称是什么,一切都是双向的。

所以我的问题是:将文件夹命名为与域名相同只是一种惯例(如果是,那么在 Ubuntu 操作系统中不起作用可能存在哪些问题)还是它是强制性的?

答案1

这只是一种惯例,通常可以简化系统管理员的生活,因为它使一切变得简单明了。

只要 Apache 具有相关权限,您就可以放置任何您喜欢的路径DocumentRoot,并且其余配置也适合该路径。

当您更改了设置DocumentRoot但没有得到预期的行为时,您应该研究 Apache 日志文件来了解发生了什么。

答案2

这可能在其他地方重复多次,但在 2.2 中,当使用相同的 ip:port 组合定义多个虚拟主机时,您必须添加额外的指令“once”和“in server config”上下文,就像这样,以便能够“登陆”第二个虚拟主机:

NameVirtualhost *:80

<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/xyzvk.com
</VirtualHost>

<VirtualHost *:80>
ServerName xyzvk.com
ServerAlias www.xyzvk.com
DocumentRoot /var/www/yolo
</VirtualHost>

相关内容