我正在学习如何在 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>