Virtualhost 不能出现在 VirtualHost 部分中

Virtualhost 不能出现在 VirtualHost 部分中

我无法为子域设置 vhost 配置。当我在其中输入以下内容时,例如

<VirtualHost *:80>
    ServerName redmine.website.de
    ServerAdmin webmaster@localhost
    DocumentRoot /usr/share/redmine/public
</VirtualHost>

并重新配置 vhost 我收到错误消息

<VirtualHost> cannot occur within <VirtualHost> section

我查看了每个配置文件、apache2.conf、httpd.conf 以及 /sites-xxx 中的所有文件。语法始终正确。

在此处输入图片描述

当我把一个放在</VirtualHost>顶部时:

在此处输入图片描述

知道如何解决这个问题吗?

答案1

我的第一个猜测是,你正在编辑的文件被另一个文件包含,但是来自虚拟主机指令内部或者您只需要查看 conf.d 中的所有其他文件(特别是在您正在处理的文件之前加载的文件),并确保所有文件都关闭了虚拟主机指令。如果您尝试</virtualhost>在这个额外的配置文件中执行此操作,即使在您开始添加这个新的虚拟主机之前 apache 已经运行,也很有可能</virtualhost>在后面的文件中或包含 conf.d 的文件中存在必要的内容。显然,多余的结束标记与嵌套的虚拟主机一样无效。

答案2

首先要做的是</VirtualHost>在 vhost 定义之前放置一个指令,例如

</VirtualHost>
<VirtualHost *:80>
    ServerName redmine.website.de
    ServerAdmin webmaster@localhost
    DocumentRoot /usr/share/redmine/public
</VirtualHost>

如果这样可以解决问题或者您收到不同的错误消息,则说明您的配置中某处<VirtualHost>没有关闭。</Virtualhost>

编辑

我能让你的原始错误信息出现的唯一方法是有一个完整的

<VirtualHost *:80>
   ...
</VirtualHost> 

包含文件内的定义,该文件包含在<VirtualHost>定义内。

相关内容