Apache上的多个域上的dynamic子域

我使用Ubuntu / Apache运行一个Web服务器,并且正在寻找一种在多个域中dynamic托pipe子域名的方法。 我一直在与阿帕奇打搅了几天,并没有完全解决。

这是我正在寻找的工作stream程:

文件夹结构:

 /home/ [domain w/o extension] /server/ [subdomain, default 'www'] 

例如: http://sub.domain.tld/匹配/home/domain/server/sub

这是我迄今为止,使用mod_vhost_alias:

 UseCanonicalName Off VirtualDocumentRoot /home/%-2/server/%-3 

仅这一点就满足了:

  • http://www.domain.tld/ – 寻找~/server/www
  • http://subdomain.domain.tld – 寻找~/server/subdomain
  • http://www.subdomain.domain.tld – 寻找~/server/subdomain

但它不能满足http://domain.tld/ 。 (寻找~/server/domain

另外,如果~/server/subdomain不存在,它将返回一个404。

简而言之,我希望每个子域在~/server/都有自己的文件夹,或者如果不存在,则默认为~/server/www

我想避免使用mod_rewrite,因为它不会更改文档根目录; 它只是在请求前面加一个目录。 但是,我可能只是改变文件夹结构作为最后的手段。

你可以使用Apache的mod_rewrite来完成这个任务,而不使用虚拟主机。 它可以分割和切割URL以及检查目录和文件的存在。

它可能不如虚拟主机快,但实施起来要容易得多。