Configurando subdomínios em localhost com Apache2
Para quem desenvolve aplicações web em computadores compartilhados fica difícil trabalhar com um DocumentRoot que pode ser acessado por todos. A Solução mais prática é criar um DocumentRoot na $HOME de cada usuário, e usar o módulo userDir, mas isto gera alguns problemas quando trabalhando com mod_rewrite, exigindo a definição de uma regra RewriteBase no .htaccess.
Para acertar isto, podemos criar um subdomínio na própria máquina local, como http://exemplo.localhost.
Mesmo para quem é o único usuário de seu computador de desenvolvimento, é uma boa idéia separar DocumentRoots por usuário, uma vez que isso previne definir permissão de escrita ao DocumentRoot padrão do Apache, ou acesso a uma conta de super usuário (root).
Antes de tudo habilite e configure o módulo userdir no apache. No Debian basta criar um link simbólico para o módulo e o arquivo de configuração de /etc/apache2/mods-available/ para /etc/apache2/mods-enabled/:
# cd /etc/apache2/mods-enabled # ln -s ../mods-available/userdir.conf userdir.conf # ln -s ../mods-available/userdir.load userdir.load
Então crie um VirtualHost com a configuração a seguir, substituindo usuario pelo seu nome de usuário no sistema, e as pastas public_html e cgi-bin caso necessário:
<virtualhost>
ServerName usuario
ServerAlias www.usuario.localhost usuario.localhost
DocumentRoot /home/usuario/public_html
ServerAdmin webmaster@usuario.localhost
UseCanonicalName Off
ScriptAlias /cgi-bin/ /home/usuario/public_html/cgi-bin/
</virtualhost>
No Debian as configurações de VirtualHost ficam no diretório /etc/apache2/sites-available, assim basta criar um arquivo.conf neste local com a configuração acima e criar um link simbólico para ele em /etc/apache2/sites-enabled, adicionando a este as linhas acima.
# cd /etc/apache2/sites-enabled # ln -s ../sites-available/usuario.conf usuario.conf
Agora seu subdomínio está configurado no servidor web Apache, mas ainda falta dizer para seu computador que este domínio pertence ao servidor local. Para isso adicione a seguinte linha ao arquivo /etc/hosts:
127.0.0.1 usuario.localhost usuario
Depois disso apenas reinicie o apache (/etc/init.d/apache2 restart ou /etc/init.d/httpd restart) e você poderá acessar seu DocumentRoot digitando http://usuario.localhost em qualquer navegador web, sem se preocupar com regras adicionais no .htaccess.

Últimos Comentários