我是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
我也尝试过与ScriptAlias和Alias相同的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>