我使用Ubuntu / Apache运行一个Web服务器,并且正在寻找一种在多个域中dynamic托pipe子域名的方法。 我一直在与阿帕奇打搅了几天,并没有完全解决。
这是我正在寻找的工作stream程:
如果HTTP_HOST有一个前缀'www',忽略它。
如果它包含一个子域名,请检查~/server/
如果不存在,请将~/server/www为文档根目录。
多级子域需要路由到基本级子域。 例如, http://another.sub.domain.tld/应该默认为~/server/sub
如果没有请求子域名,请使用~/server/www
文件夹结构:
/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以及检查目录和文件的存在。
它可能不如虚拟主机快,但实施起来要容易得多。