Php 无法使用httpd-vhosts.conf从子域重定向到子域

Php 无法使用httpd-vhosts.conf从子域重定向到子域,php,apache,.htaccess,redirect,subdomain,Php,Apache,.htaccess,Redirect,Subdomain,我正在尝试设置一个本地开发服务器,在那里我可以访问目录E:\development\projects\中的任何项目,并让apache自动将我重定向到正确的子域 但是,当尝试重定向到子域(backend.project01.dev01)时,我只收到一条“服务器不可访问”消息 有关更多信息,请参阅my httpd-vhosts.conf: NameVirtualHost *:80 <VirtualHost *:80> ServerName dev01 ServerAli

我正在尝试设置一个本地开发服务器,在那里我可以访问目录
E:\development\projects\
中的任何项目,并让apache自动将我重定向到正确的子域

但是,当尝试重定向到子域(
backend.project01.dev01
)时,我只收到一条“服务器不可访问”消息

有关更多信息,请参阅my httpd-vhosts.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev01
    ServerAlias www.dev01
    DocumentRoot "E:\development\projects"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects">
    </directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.dev01
    VirtualDocumentRoot "E:\development\projects\%1"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%1">
    </directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.*.dev01
    VirtualDocumentRoot "E:\development\projects\%2"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%2">
    </directory>
</VirtualHost>
NameVirtualHost*:80
服务器名dev01
ServerAlias www.dev01
DocumentRoot“E:\development\projects”
ErrorLog“logs\errors.log”
服务器名dev01
服务器别名*.dev01
VirtualDocumentRoot“E:\development\projects\%1”
ErrorLog“logs\errors.log”
服务器名dev01
服务器别名*.dev01
VirtualDocumentRoot“E:\development\projects\%2”
ErrorLog“logs\errors.log”
简言之:

这项工作:
project01.dev01/

这不起作用:
backend.project01.dev01/
所以我找到了一个解决方案。要匹配子域,必须首先匹配
最深的
级别

即:在
sub.domain
之前匹配
deep.sub.domain

本例中的答案是:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev01
    DocumentRoot "E:\development\projects"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects">
    </directory>
</VirtualHost>

## moved this up
<VirtualHost *:80>
    ServerName dev01
    ServerAlias *.*.dev01
    VirtualDocumentRoot "E:\development\projects\%2"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%2">
    </directory>
</VirtualHost>

## moved this down
<VirtualHost *:80> 
    ServerName dev01
    ServerAlias *.dev01
    VirtualDocumentRoot "E:\development\projects\%1"
    ErrorLog "logs\errors.log"
    <directory "E:\development\projects\%1">
    </directory>
</VirtualHost>
NameVirtualHost*:80
服务器名dev01
DocumentRoot“E:\development\projects”
ErrorLog“logs\errors.log”
##把这个调高
服务器名dev01
服务器别名*.dev01
VirtualDocumentRoot“E:\development\projects\%2”
ErrorLog“logs\errors.log”
##把这个移下来
服务器名dev01
服务器别名*.dev01
VirtualDocumentRoot“E:\development\projects\%1”
ErrorLog“logs\errors.log”
在本例中,apache将始终首先尝试匹配
*.dev01
,如果失败,则尝试匹配
*.dev01


希望这将在将来帮助其他人。

可能会有所帮助,也----@SUB-HDR我知道使用
重写引擎
更容易,但是我想要一个通用的、全面的解决方案,它不需要每次启动新项目时都创建新的/自定义
.htaccess
文件。你提供的答案在全球层面上对我没有帮助,但在地方层面上对我有帮助。那么你可以在这里阅读更多:也可以看看这个:或者------@SUB-HDR我发现了一个更容易实现的例子,你的链接启发我采取更简单的方法。看到我的答案了,很好。干得好:)