我是 Apache 新手,我想知道是否有办法配置VirtualDocumentRoot
为本地服务器上的其中一个虚拟主机创建例外。目前,我的所有网站都存储在具有约定的文件夹中sitename.dev
。httpd.conf
我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
。
根据我在这里找到的答案,听起来好像VirtualDocumentRoot
无法根据条件进行设置。所以我希望可以通过设置某种别名来指向exception.dev
正确的目录来解决我的问题。
我尝试添加VirtualScriptAlias
,但是这会阻止 Apache 服务器启动:
VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php
ScriptAlias
我也尝试过用和 来做同样的事情Alias
,但仍然没有成功。
我是不是漏掉了什么?还是我想做的事情根本做不到?如能得到任何帮助我将不胜感激!
哦,如果有帮助的话,这是我运行的输出httpd -S
:
httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName
VirtualHost configuration:
Syntax OK
更新:我通过修改 Shane 的以下答案来实现这一点,如下所示:
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>
答案1
拥有一个具有“正常”配置的虚拟主机,VirtualDocumentRoot
以及另一个具有异常配置的虚拟主机。
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>