Apache - 如何在 httpd.conf 中为 vhost 的 VirtualDocumentRoot 创建例外?

Apache - 如何在 httpd.conf 中为 vhost 的 VirtualDocumentRoot 创建例外?

我是 Apache 新手,我想知道是否有办法配置VirtualDocumentRoot为本地服务器上的其中一个虚拟主机创建例外。目前,我的所有网站都存储在具有约定的文件夹中sitename.devhttpd.confVirtualDocumentRoot根据服务器名称动态设置:

# 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>

相关内容