Eu executo um servidor web usando o Ubuntu / Apache, e estou procurando uma maneira de hospedar dinamicamente subdomínios em vários domínios. Eu estive brincando com o Apache por alguns dias e não consegui consertar tudo.
Este é o fluxo de trabalho que estou procurando:
-
Se HTTP_HOST tiver um prefixo 'www', ignore-o.
-
Se incluir um subdomínio, verifique se existe uma pasta correspondente em ~/server/
- Se houver uma pasta, defina essa pasta como raiz do documento.
-
Se não existir, defina ~/server/www
como a raiz do documento.
-
Os subdomínios de vários níveis precisam ser encaminhados ao subdomínio de nível básico. Por exemplo, http://another.sub.domain.tld/
deve usar como padrão ~/server/sub
-
Se nenhum subdomínio for solicitado, use ~/server/www
Estrutura de pastas:
/home/ [domain w/o extension] /server/ [subdomain, default 'www']
Exemplo: http://sub.domain.tld/
corresponde a /home/domain/server/sub
Aqui está o que eu tenho até agora, usando mod_vhost_alias:
UseCanonicalName Off
VirtualDocumentRoot /home/%-2/server/%-3
Só isso satisfaz:
-
http://www.domain.tld/
- procura por ~/server/www
-
http://subdomain.domain.tld
- procura por ~/server/subdomain
-
http://www.subdomain.domain.tld
- procura por ~/server/subdomain
Mas não é possível satisfazer http://domain.tld/
. (procura por ~/server/domain
)
Além disso, se ~/server/subdomain
não existir, ele retornará um 404.
Em suma, gostaria que cada subdomínio tivesse sua própria pasta em ~/server/
ou padrão para ~/server/www
se não existisse.
Eu quero evitar o uso do mod_rewrite porque ele não altera a raiz do documento; apenas preenche um diretório para o pedido. No entanto, posso apenas alterar a estrutura da pasta como último recurso.