A maior parte do trabalho é feita no arquivo de configuração no diretório /etc/apache2/sites-enabled/ , em um arquivo chamado algo como 000-default.conf. Esses arquivos permitirão que você tenha vários domínios virtuais, como www.example.dev ou example.local, etc. Você os configura junto com seus diretórios nesse arquivo e insere vários sites em /etc/hosts para corresponder. Todos os sites têm o mesmo endereço IP local, mas o nome direciona para o host virtual correto.
Neste arquivo, você precisa clonar as configurações padrão quantas vezes precisar, com algo assim:
Conteúdos originais
<VirtualHost *:80>
. . .
</VirtualHost>
Entradas adicionais de host virtual
<VirtualHost *:80>
<Directory /var/www/html/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
DocumentRoot /var/www/html/site1/
ServerName site1.local
ServerAlias www.site1.local
</VirtualHost>
<VirtualHost *:80>
<Directory /var/www/html/site2>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
DocumentRoot /var/www/html/site2/
ServerName site2.local
ServerAlias www.site2.local
</VirtualHost>
. . .
Para que a mágica de reescrita funcione, você também precisa verificar se o mecanismo de reescrita está ativado. Isto é feito criando um link simbólico em mods-enabled para um módulo em mods-available. Se você cd para /etc/apache2/mods-enabled , então digite ln -s ../mods-available/rewrite.load , ele habilitará o mecanismo de reescrita.
Em seguida, em /etc/hosts/ , você tem entradas correspondentes, como:
127.0.0.1 site1.local
127.0.0.1 site2.local
Isso deve levá-lo até eu completar isso, ou você tem perguntas para eu responder.
Respostas às perguntas nos comentários 1
Um problema é a diretiva "DocumentRoot": o diretório especificado deve ser simplesmente a raiz do documento do site virtual, que provavelmente não é " /var/www/arcadr.local/html " conforme especificado. Normalmente, o diretório do site estaria no final. "arcadr.local" é um nome arbitrário, mas corresponder ao site é provavelmente o melhor. Por isso, provavelmente deveria ser "/var/www/html/arcadr.local/'".
Em relação ao erro ln, se eu tivesse tido mais tempo, eu teria explicado que o resultado final é que você precisa de um link simbólico chamado "rewrite.load" no diretório mods-enabled que vincula ao arquivo real em o diretório mods-available . Então, evidentemente, você já tinha, e realmente não precisava fazer isso de novo, mas contanto que estivesse lá, deveria funcionar.
Tente a única alteração e tente entender o que ela está fazendo. Na verdade, é bastante compreensível e, quando você começa a entender, você aprende mais.
A propósito, a diretiva "alias" não é necessária, apenas adicionei isso para ilustrar como você poderia fazer isso se você quiser.
Respostas às perguntas nos comentários 2
O arquivo html padrão é simplesmente um dos vários hosts virtuais especificados no arquivo 000-default.conf. Note que originalmente deixei a extensão ".conf" do arquivo. Você achou esse arquivo correto? Deve estar em " sites-enabled " e não em " sites-available ". O mesmo que para os mods, você pode ter vários sites disponíveis , mas você precisa ter um ativado , e o padrão é " 000-default.conf " (a menos que tenha mudado desde Eu configurei isso.
Você diz que "arcadr.local apenas me redireciona para outro site .local conectado ao meu localhost". Certifique-se de ter este arquivo de configuração configurado corretamente. Deve ter uma série de blocos, como html:
<VirtualHost *:80>
. . .
</VirtualHost>
Cada host virtual deve iniciar e terminar com essas diretivas, e você não pode ter um incorporado em outro.
Você pode encontrar uma boa documentação e exemplos no site apache.org. Foi aqui que aprendi a configurar os arquivos. Meu conselho é mantê-lo simples, e se você adicionar algo que você não entende, faça um passo de cada vez e remova qualquer coisa que não funcione. Veja alguns exemplos: Exemplos do VirtualHost
Alguns ponteiros adicionais
Sempre que você fizer alterações no arquivo de configuração em /etc/apache2/sites-enabled/000-default.conf , será necessário reiniciar o servidor Apache. Eu uso o comando sudo /etc/init.d/apache2 restart para fazer isso. Editar : Gabriel postou um comando melhor para isso:
sudo service apache2 restart
Mas ambos os comandos funcionarão, pelo menos por enquanto.
Essa mesma técnica funciona para servidores DNS dinâmicos, como noip.com, dyndns etc. Por exemplo, acabei de criar três sites de amostra no meu sistema inicial. Se meu computador estiver ligado, você pode tentar ver. Se você verificar, verá que todos os três sites têm exatamente o mesmo endereço IP, mas vão para sites virtuais diferentes (variações do padrão, que você pode ver em leftcoast.noip.us
http://site1.leftcoast.noip.us/
http://site2.leftcoast.noip.us/
http://site3.leftcoast.noip.us/