我在本地机器上使用虚拟主机设置了 apache2。
在我的主机文件中,我有以下内容:
127.0.1.1 mysite
'mysite' 是一个网站,其中我有使用 include('/path/to/whatever') 的 php 脚本;
如果我在浏览器的 URL 中输入“mysite”,一切都会正常加载。
但是如果我输入 http://localhost/我的网站,
我收到如下错误: 警告:包括(/media/Shared/sites/www/includes/functions.php
请注意,在错误中,在“www”之后缺少“mysite”。所以我的脚本认为“www”是根,而不是“www/mysite”。这是一个问题,因为当我通过外部 IP 访问网站时也会发生同样的事情。
我怎样才能解决这个问题?
答案1
当您访问http://localhost/我的网站/,Apache 将使用 Apache 的优先规则来查找要使用的正确 VirtualHost,该规则在官方 Apache 文档中有详细描述。然后,这取决于您如何设置不同的 VirtualHost。
您需要在 mysite 虚拟主机设置中有一个“ServerAlias localhost”,否则 Apache 很可能会改用 000-default vhost。如果您在该 IP 的 NameVirtualHosts 规则下运行,Apache 将使用请求的 Host: 标头查找要使用的正确 vhost,如果没有匹配项,将使用对该 IP/端口有效的第一个定义。
答案2
您的“mysite”是虚拟主机列表中的第一个条目吗?如果不是,则访问 http://localhost/我的网站/将不会使用预期的虚拟主机条目。除非请求的主机名与服务器名称或者服务器别名您的配置中的条目(允许使用通配符)Apache 将不会使用该条目。