
Tenho certeza de que não sou a primeira pessoa a encontrar esse problema, mas não consigo, de jeito nenhum, encontrar uma resposta - embora isso possa ser devido a não saber o que procurar.
Preciso hospedar muitos sites de clientes em um servidor Ubuntu. Tudo está funcionando bem, mas quero configurar hosts virtuais dinâmicos, para poder automatizar o processo de criação de um site wordpress no servidor. Tenho mod_vhost_alias
o módulo funcionando e estou satisfeito com isso, no entanto, tive um problema com .com
domínios vs .co.uk
ou .com.au
domínios e oVirtualDocumentRoot
Para um domínio como example.com
eu quero www.exapmple.com
que todas as solicitações example.com
apontem para um diretório chamado algo como /var/webroot/example.com
e para domínios como example.co.uk
eu gostaria que todas as solicitações www.example.co.uk
apontassem example.co.uk
para um diretório chamado/var/webroot/example.co.uk
O VDR que tenho no momento é assim...
VirtualDocumentRoot /var/webroot/%-2.0.%-1.0
O que agarra a penúltima e última parte. Isso funciona muito bem, example.com
mas example.co.uk
está procurando um diretório em /var/webroot/co.uk
- o que não é o ideal!
Existe uma maneira de contornar isso? Preciso usar mod_rewrite
e, em caso afirmativo, como?
Responder1
Este é um caso em que eu apenas quebraria os links simbólicos em vez de usar um muito específico (e potencialmente frágil) RewriteRule
:
Use VirtualDocumentRoot /var/webroot/%0
e, em seguida, /var/webroot/
crie um link simbólico para www.example.com
apontar para o diretório real de example.com
. Isso funcionará com domínios da profundidade que você precisar, além de ser um pouco mais flexível se você tiver um site onde www
deveria ter conteúdo diferente por algum motivo, ou se quiser apontar aaa.example.com
para o mesmo conteúdo de example.com
.
Se isso não for do seu agrado, você poderia usar mod_rewrite
:
DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1
Isso sempre procurará o nome de domínio em /var/webroot
, rasgando www
a frente, se estiver lá, antes de procurar.
Como alternativa, você também pode redirecionar para remover (ou adicionar) a www
todas as solicitações, em vez de servir o mesmo conteúdo para ambos os domínios.