Você pode preencher completamente a hospedagem virtual baseada em nomes de valas, desativar todos os seus arquivos sites-enabled
e colocar VirtualDocumentRoot
na configuração principal do servidor.
Provavelmente, o que você precisa fazer é criar um novo vhost em sites-available
e criar um link simbólico para sites-enabled
normalmente, fazendo com que ele funcione como um todo. A nomeação é significativa; ele precisa ser o primeiro arquivo em ordem alfabética para ser tratado como padrão.
Então:
- Crie um arquivo alfabético inicial que será carregado primeiro, para ser tratado como padrão, como
/etc/apache2/sites-available/0-dynamic
. -
Dê ao novo arquivo vhost algum conteúdo como este:
<VirtualHost *:80> ServerName catchall VirtualDocumentRoot /path/to/domains/%0 <Directory /path/to/domains> Order Allow,Deny Allow from all </Directory> </VirtualHost>
- Ativá-lo:
a2ensite 0-dynamic
. (se o padrão ainda estiver em vigor em/etc/apache2/sites-enabled/000-default
, renomeie-o para que ele apareça após o novo em ordem alfabética.
Essa configuração veiculará os sites configurados dinamicamente a partir do VirtualDocumentRoot
, mas pode ser substituída e veiculada por um% diferente <VirtualHost>
quando esse bloco tiver um ServerName
ou ServerAlias
que corresponda à solicitação. Isso pode ser útil se as configurações do vhost "geral" não forem apropriadas para domínios específicos.
Edit: (Adicionando algumas coisas que experimentei tentando configurar isso pode ser útil. Todo o crédito vai para o autor original!)
VirtualDocumentRoot
Se você receber um erro dizendo
Invalid command 'VirtualDocumentRoot', perhaps misspelled...
verifique se o módulo vhost_alias está ativado. Se não for, corra
>sudo a2enmod vhost_alias
Como gerenciar o principal www
Adicione as seguintes regras (não se esqueça de substituir o exemplo com seu domínio real) pelo arquivo 0-default para manipular www.example.com e example.com.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
Neste exemplo, o www é removido para todas as solicitações, portanto, o diretório deve ser example.com.