[英]Cannot redirect to sub-subdomain from subdomain using httpd-vhosts.conf
I'm attempting to setup a local development server where I can simply access any project within a directory E:\\development\\projects\\
and have apache automatically redirect me to the correct subdomain. 我正在尝试设置本地开发服务器,在这里我可以直接访问目录
E:\\development\\projects\\
任何项目,并让apache自动将我重定向到正确的子域。
However when attempting to redirect to a sub-subdomain ( backend.project01.dev01
), I simply get a "server unreachable" message. 但是,当尝试重定向到子子域(
backend.project01.dev01
)时,我只是收到“服务器无法访问”消息。
See my httpd-vhosts.conf for more info: 有关更多信息,请参见我的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>
In a nutshell: 简而言之:
This work: project01.dev01/
这项工作:
project01.dev01/
This doesn't work: backend.project01.dev01/
这不起作用:
backend.project01.dev01/
So I've found a solution. 所以我找到了解决方案。 To match sub-subdomains, you have to match the
deepest
level first. 要匹配子子网域,您必须首先匹配
deepest
级别。
Ie: match deepest.sub.domain
before sub.domain
即:在
sub.domain
之前匹配deepest.sub.domain
The answer in this example is: 在此示例中的答案是:
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>
In this example apache will always first attempt to match the *.*.dev01
and if it fails, attempt to match *.dev01
. 在此示例中,apache将始终首先尝试匹配
*.*.dev01
,如果失败,则尝试匹配*.dev01
。
Hopefully this will help others in the future. 希望这会在将来对其他人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.