无法添加基于命名的虚拟主机

无法添加基于命名的虚拟主机

我的默认虚拟主机加载 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>

相关内容