【问题标题】:No Matching <VirtualHost> Error When Starting Apache启动 Apache 时没有匹配的 <VirtualHost> 错误
【发布时间】:2013-02-03 06:23:04
【问题描述】:

我在尝试启动 Apache 时不断收到错误消息:

</VirtualHost> without matching <VirtualHost> section

...参考下面列出的 Apache 配置文件的第 4 行:

<VirtualHost 74.117.238.120:80>
   ServerName www.mydomain.biz    
   DocumentRoot /var/www/mydomain
</VirtualHost>

<VirtualHost 74.117.238.120:80>
   ServerName codejerk.mydomain.biz   
   DocumentRoot /var/www/codejerk
</VirtualHost>

<VirtualHost 74.117.238.120:80>
   ServerName www.mydomain.tk   
   DocumentRoot /var/www/mydomain
</VirtualHost>

<VirtualHost 74.117.238.120:80>
   ServerName codejerk.mydomain.tk
   DocumentRoot /var/www/codejerk
</VirtualHost>

“Listen”和“NameVirtualHost”指令位于调用此指令的文件中:

Listen 80
NameVirtualHost 74.117.238.120:80

这让我发疯了——显然每个 VirtualHost 块都有一个开始和结束标记...

有人有什么想法吗?

提前致谢!

【问题讨论】:

标签: apache virtualhost


【解决方案1】:

当您使用 '\r\n' 而不是 unix 格式 '\n' 以 PC/Windows 格式保存 vHost 文件时,通常会发生这种情况。 以 unix 格式再次保存这些文件即可解决问题。

如果存在,还需要删除字节顺序标记 (BOM)。

【讨论】:

  • 感谢您的提示。在我的情况下,调试这实际上几乎是不可能解决的。我实际上只是复制/粘贴了一个配置文件,而没有注意源格式。啊哈时间,我真的不知道这个 \r\n 可以逃脱 gedit 编辑器。
  • BOM 是 apache2 的问题。 \r\n 不是问题(这比 HTTP 服务器不处理 HTTP 需要的 \r\n 更有趣:)
【解决方案2】:

我通过将 apache2/sites-available/default 和 /apache2/ports.conf 的内容合并到 apache2/apache2.conf 并删除包含这些文件的行来解决这个问题。

显然,包含这些其他文件的顺序有问题。

【讨论】:

    【解决方案3】:

    当你的配置文件有BOM 时,apache2 会显示这个奇怪的消息。

    大多数工具会隐藏/忽略 BOM,但您可以使用命令 file 轻松检测到它:

    % file /etc/apache2/conf-available/maxclients.conf 
    /etc/apache2/conf-available/maxclients.conf: UTF-8 Unicode (with BOM) text
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      • 2019-08-13
      相关资源
      最近更新 更多