我的默认虚拟主机加载 mainsite.com
NameVirtualHost *
<VirtualHost *>
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我添加了另一个虚拟主机,因此当我访问 myothersite.com 时它将加载
NameVirtualHost *
<VirtualHost *>
ServerName myothersite.com
DocumentRoot /var/www/myothersite.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我已经为 myothersite.com 的服务器 IP 添加了 A 记录。
我重启了 Apache 服务器,但 myothersite.com 仍无法加载。我收到“服务器未找到”的提示。
当我重新启动时 [warn] NameVirtualHost *:0 has no VirtualHosts
答案1
下面的代码片段肯定可以工作:
NameVirtualHost *
<VirtualHost *>
DocumentRoot /var/www/
# ...
</VirtualHost>
<VirtualHost *>
ServerName myothersite.com
DocumentRoot /var/www/myothersite.com
# ...
</VirtualHost>
看看为什么NameVirtualHost
它只出现一次而多个<VirtualHost>
指令可以引用它。
你可以如果您想更具体,也可以使用NameVirtualHost *:80
或。有关详细信息,请阅读 Apache httpd 的NameVirtualHost <IP address>:80
基于名称的虚拟主机支持。
由于您提到了“未找到服务器”之类的错误消息,因此您的域名很可能存在 DNS 问题。请再次检查您的名称服务器中域名是否设置正确。
答案2
<VirtualHost *:80>
ServerName drongo.zarack.com
ServerAlias drongo.zarack.com
DocumentRoot /var/www/html
DirectoryIndex index.html index.php
</VirtualHost>
这是我的工作配置文件。
另外,请通过以下方式检查 A 记录是否已分配给你的 DNS 服务器:nslookup myothersite.com并确认您获得了期望的值。
顺便说一下,我发现为了更好地维护站点,我将 CNAME 作为虚拟名称,将 A 作为实际主机。
答案3
确保在 NameVirtualHost 和 VirtualHost 中都使用 *:80:
NameVirtualHost *:80
<VirtualHost *:80>
# ...
</VirtualHost>