无效的命令“VirtualDocumentRoot”

and*_*ndy 15 apache-2.2

我不确定为什么在重新启动 apache 时会出现以下错误:

Invalid command 'VirtualDocumentRoot', perhaps misspelled or defined by a module not included in the server configuration Action 'start' failed.

它所指的片段是这样的:

<VirtualHost *:80>
        ServerAdmin help@mydomain.com
        VirtualDocumentRoot /local/www/staging/%1

        ServerAlias *.staging.mydomain.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我认为这是一个拼写错误,但它是直接从我的另一台服务器复制的。它在那里工作得很好。有任何想法吗?

Mad*_*ter 28

该文档表明该指令由模块 vhost_alias 提供。你应该确保你有

LoadModule vhost_alias_module modules/mod_vhost_alias.so
Run Code Online (Sandbox Code Playgroud)

配置指令在它不起作用的服务器的配置文件中。

  • 非常感谢!那帮助我解决了它。您发布的代码不能直接工作,但我使用以下方法加载了模块:`a2enmod vhost_alias` (14认同)

小智 5

我遇到了与安迪提供的相同的错误,但在我的情况下,情况有点不同。从 MadHatter 的回答中,我可以设计出这个问题。

我的 apache2 服务器有点不同。它有 2 个目录,即/etc/apache2/mods-available& /etc/apache2/mods-enabled。在目录中,mods-available您将看到可加载模块配置文件的列表,在这种情况下,我看到一个名为的文件vhost_alias.load,其中包含配置为

LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so
Run Code Online (Sandbox Code Playgroud)

因此,我使用以下命令启用此配置:

sudo a2enmod vhost_alias
Run Code Online (Sandbox Code Playgroud)