Apache – 如何在httpd.conf中为虚拟主机的VirtualDocumentRoot创build一个exception?

我是Apache的新手,我想知道是否有一种方法来configurationVirtualDocumentRoot为我的本地服务器上的一个虚拟主机创build一个例外。 目前,我的所有网站都存储在会议sitename.dev文件夹中。 在httpd.conf我基于服务器名称dynamic设置VirtualDocumentRoot

 # get the server name from the Host: header UseCanonicalName Off LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon CustomLog /path/to/logs/access.log vcommon ErrorLog /path/to/logs/errors.log VirtualDocumentRoot /path/to/vhosts/%0 

这对我的所有网站都有效,只有一个例外,其中一个站点的文档根目录应该指向exception.dev/src/php而不是exception.dev

根据我在这里find的答案 ,听起来好像VirtualDocumentRoot不能根据条件设置。 所以我希望我的问题可以通过设置某种别名来指向exception.dev到正确的目录来解决。

我已经尝试添加VirtualScriptAlias ,但是这阻止了Apache服务器启动:

 VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php 

我也尝试过与ScriptAliasAlias相同的types,但仍然没有运气。

有什么我在这里失踪? 或者是我想要做的不可能? 任何帮助将不胜感激!

哦,如果有帮助,这是我的输出,如果我运行httpd -S

 httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName VirtualHost configuration: Syntax OK 

更新 :我得到这个工作通过修改肖恩的答案如下:

 NameVirtualHost * <VirtualHost *:80> ServerName exception.dev DocumentRoot /path/to/vhosts/exception.dev/src/php </VirtualHost> <VirtualHost *:80> ServerName default ServerAlias *.dev VirtualDocumentRoot /path/to/vhosts/%0 </VirtualHost> 

有一个虚拟主机与你的“正常”的configuration, VirtualDocumentRoot和另一个与例外configuration。

 NameVirtualHost *:80 <VirtualHost *:80> ServerName default ServerAlias *.dev VirtualDocumentRoot /path/to/vhosts/%0 </VirtualHost> <VirtualHost *:80> ServerName exception.dev DocumentRoot /path/to/vhosts/exception.dev/src/php </VirtualHost>