我正在尝试让 VirtualDocumentRoot 在 Ubuntu Server 上全新安装的 apache2 中运行。
我已经将 httpd.conf 配置如下:
<VirtualHost *:80>
ServerName thicket
DocumentRoot /var/www
UseCanonicalName Off
VirtualDocumentRoot /var/www/%1/%2
</VirtualHost>
当我重新启动 apache 时,即使关联文件/目录存在(/var/www/dev/test/index.html),我也无法访问 dev.test.thicket/index.html。
当我注释掉 UseCanonicalName 和 VirtualDocumentRoot 时,我可以使用 thicket/dev/test/index.html 访问服务器
Apache 让我感到困惑和害怕。我到底做错了什么?
答案1
如果您在本地发出请求,您的 DNS 是否将“dev.test.thicket”解析为本地主机(127.0.0.1 或 ::1)?或者如果您在远程发出请求,则解析为服务器的 IP 吗?
VirtualHosts 根据 HTTP 请求的传入“Host:”标头做出服务决策,但 DNS 在该 HTTP 请求发送之前会进行单独的解析。
如果您系统的主机名是“thicket”,那么该词可能通过 /etc/hosts 文件解析为 127.0.0.1,特别是如果您将该主机名设置为操作系统安装的一部分。
您可以尝试将“dev.test.thicket 127.0.0.1”添加到您的主机文件中,仅用于测试目的。