我无法为子域设置 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>
定义内。