用于单个通配符域的Apache Multiple VirtualDocumentRoot * .dev

时间:2013-04-12 12:40:37

标签: apache apache2 virtualhost vhosts mod-vhost-alias

我正在使用虚拟主机和本地搜索域名TLD,我需要3个用例同时工作,但到目前为止,我一次只能让两个人工作

我需要三个不同的测试域才能访问各自的文档根目录。

  1. 案例1: test1.dev - > / path / to / www / SomeFolderName(使用它自己的唯一文件夹名称和虚拟主机文件覆盖)

  2. 案例2: * .dev - > / path / to / www /%0(包含.dev的完整网址,因此test2.dev指向/path/to/www/test2.dev)

  3. 案例3: * .dev - > / path / to / www /%1(完整网址不包括 .dev,因此test3.dev指向/ path / to / www / test3)

  4. 因此,对于任何域(如test2.dev或test3.dev),我需要两个通配符情况,如果存在,则使用VirtualDocumentRoot "/path/www/%0";如果存在,则使用VirtualDocumentRoot "/share/www/%1"

    现在,案例2或案例3的工作取决于首先加载的内容,但不是同时加载两者。 如何让1个捕获所有域只选择现有的文档根?

2 个答案:

答案 0 :(得分:0)

基于目录是否实际存在,Apache并不真正支持更改文档根目录。我认为您可以更好地标准化文档根目录,以便它们全部/share/www/testX.dev并在必要时创建从/share/www/testX.dev/share/www/testX的符号链接。您甚至可以从自定义404处理程序创建符号链接。

答案 1 :(得分:0)

您可以尝试为所有目录使用一个文档根目录,并让mod_rewrite检查是否存在文件夹和/或文件(使用-f -dCondPattern作为{{ {1}})和RewriteCond网址,以便检索正确的文件。这适用于通配符域,并且在使用哪个文件夹时具有非常灵活的规则。