使vhost正确redirect通配符子域

我试图在我的服务器上实现3件事情:

  1. cat.mydomain.com应该指向/ home / www /
  2. * .mydomain.com应该指向/ home / www / project / web /
  3. * .mydomain.com / indexed /应指向/ home / www / indexed /

为此,我使用以下规则设置了httpd-vhosts.conf文件:

NameVirtualHost *:80 <VirtualHost *:80> ServerName cat.mydomain.com ServerAlias cat.mydomain.com DocumentRoot /home/www/ </VirtualHost> <VirtualHost *:80> ServerName *.mydomain.com/indexed/ ServerAlias *.mydomain.com/indexed/ DocumentRoot /home/www/indexed/ </VirtualHost> <VirtualHost *:80> DocumentRoot /home/www/project/web/ ServerName *.mydomain.com ServerAlias *.mydomain.com </VirtualHost> 

其中两个像预期的那样工作,cat.mydomain.com指向/ home / www /和* .mydomain.com指向/ home / www / project / web /,但显然不是redirect目录*的正确方法。 mydomain.com/indexed/,因为这是行不通的。 我怎样才能工作? 是虚拟主机部分这样做的正确的地方,或者应该在.htaccess文件而不是?

与ServerAlias不同, ServerName不能包含通配符,所以这个

 ServerName *.mydomain.com 

显然是错误的。 另外阅读ServerName的文档显示以下语法

语法ServerName [scheme://]fully-qualified-domain-name[:port]

所以

 ServerName *.mydomain.com/indexed/ 

也是错的 您还应该查看ServerAlias的语法,因为在某些情况下也有错误。

你应该看看Alias指令。 在你的虚拟主机定义里面,一个合适的别名应该做你想要的。