📜  不匹配<VirtualHost>(1)

📅  最后修改于: 2023-12-03 15:21:30.835000             🧑  作者: Mango

不匹配

在使用 Apache Web 服务器时, 标签是一个必要的配置,因为它允许你在同一台服务器上分配多个域名和网站。每个 带有自己的配置,并且它们可以独立设置,因此这是一个非常有用的功能。

但是有时候,当你添加一个新的 时,你可能会遇到以下错误消息:

Syntax error on line XX of /etc/httpd/conf/httpd.conf:
<VirtualHost> cannot occur within <VirtualHost> section

这个错误消息说明你要么在 标签内部添加了另一个 标签,要么你在 标签外部添加了一个闭合标签()。

这通常发生在以下情况下:

  • 当你将一个子域名添加到现有的主域名中时。
  • 当你将另一个虚拟主机添加到现有的虚拟主机中时。

无论哪种情况,你都必须检查你的 Apache 配置,确保你没有混淆标签。

例如,如果你想将一个子域名添加到现有的主域名中,你必须将新的 标签添加到现有的 标签内部,如下所示:

<VirtualHost *:80> 
  ServerName example.com 
  DocumentRoot /var/www/example.com 
  <Directory /var/www/example.com> 
    AllowOverride All 
    Require all granted 
  </Directory> 
  <VirtualHost *:80> 
    ServerName sub.example.com 
    DocumentRoot /var/www/sub.example.com 
    <Directory /var/www/sub.example.com> 
      AllowOverride All 
      Require all granted 
    </Directory> 
  </VirtualHost> 
</VirtualHost>

在这个例子中,我们将名为 sub.example.com 的子域名添加到主域名 example.com 中。注意,我们在现有的 标签内部添加了另一个 标签来定义子域名。

另一方面,如果你将另一个虚拟主机添加到现有的虚拟主机中,则必须确保你在 标签外部添加一个闭合标签,如下所示:

<VirtualHost *:80> 
  ServerName example.com 
  DocumentRoot /var/www/example.com 
  <Directory /var/www/example.com> 
    AllowOverride All 
    Require all granted 
  </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
  ServerName sub.example.com 
  DocumentRoot /var/www/sub.example.com 
  <Directory /var/www/sub.example.com> 
    AllowOverride All 
    Require all granted 
  </Directory> 
</VirtualHost> 

在这个例子中,我们将名为 sub.example.com 的虚拟主机添加到现有的虚拟主机中。我们确保在第一个 标签外部添加了一个闭合标签,然后在第二个 标签内部定义了新的虚拟主机。

综上所述,当你遇到“不匹配 ”错误时,你必须检查你的 Apache 配置,确保你没有在 内部添加另一个 标签,或者你在 外部添加了闭合标签。