无论子域重定向到特定文件夹

时间:2013-12-29 09:30:54

标签: apache .htaccess mod-rewrite subdomain wildcard

我有以下结构

  • web应用
  • 网站
  • .htaccess

我创建了一个虚拟主机,如下所示

  • mydomain.com - >指向 - >网站
  • app.mydomain.com - >指向 - > web应用

我需要应用通配符DNS概念,使任何子域指向我的webapp文件夹,并将子域保留在url中。 喜欢     username.mydomain.com     company-name.mydomain.com     whatever.mydomain.com

并将它们指向webapp文件夹

有没有虚拟主机或.htaccess方法呢?

此致

1 个答案:

答案 0 :(得分:0)

根据Apache docs,vhost解析使用定义顺序。以下配置应该执行您想要的操作:

<VirtualHost *:80>
    ServerName www.yourdomain.com
    ServerAlias yourdomain.com
    DocumentRoot /www/yourdomain/website
</VirtualHost>

<VirtualHost *:80>
    ServerName app.yourdomain.com
    DocumentRoot /www/yourdomain/webapp
</VirtualHost>

<VirtualHost *:80>
    ServerName *.yourdomain.com
    DocumentRoot /www/yourdomain/customsubdomain
</VirtualHost>

Apache会将请求路由到与ServerName指令匹配的第一个vhost

  • yourdomain.com将匹配第一个
  • www.yourdomain.com将匹配第一个
  • app.yourdomain.com将匹配第二个
  • companyname..yourdomain.com第三个
  • username.yourdomain.com第三个
  • 等......

*.yourdomain.com匹配app.yourdomain.comwww.yourdomain.com(但不是yourdomain.com)。因此,通配符(*)域必须是文件中的最后一个域,因此它只捕获未发送到wwwapp的请求。