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我发现了一个更容易实现的例子,你的链接启发我采取更简单的方法。看到我的答案了,很好。干得好:)