Como posso ter vários sites apache sob o mesmo domínio?

2

Eu tenho um único IP que é externo - por exemplo, xx.xx.xx.xx . Atualmente, tenho 2 URLs que resolvem o endereço IP. Eu uso hosts virtuais dentro do Apache para ter certeza de que as solicitações certas vão para o site:

www.mysite1.com --> /home/mysite1
www.mysite2.com --> /home/mysite2

Funciona muito bem. No entanto ...

Eu quero adicionar um terceiro (e depois quarto e quinto, etc) site a este IP. Os sites são temporários e, portanto, não recebem nomes de domínio. Eu esperava acessá-los usando:

http://xx.xx.xx.xx/mysite3 where mysite3 --> /home/mysite3

mas parece que o host virtual do site1 captura essas solicitações e roteia a solicitação para www.mysite1.com , que tenta encontrar os arquivos (mysite3), então eu recebo a página www.mysite1.com with 404 (Eles são todos sites do Wordpress). / p>

Tenho certeza de que isso pode ser feito, mas tenho certeza de que não consigo descobrir.

Alguém tem uma ideia de como eu preciso configurar "coisas"?

    
por Joel Themmen 14.03.2014 / 01:05

1 resposta

1

Você tem 2 soluções

1. Criando um host virtual para cada site

Na minha opinião, eu recomendaria essa solução se fosse uma possibilidade.

Nesta etapa, você precisaria criar um site exatamente como fez para os anteriores. Mas você precisará dar a eles um domínio como www.site3.temp , mesmo que não tenha um registro de DNS. (observe o .tmp TLD)

Em seguida, para cada usuário que abrir esse site, eles precisarão editar o arquivo de hosts e adicionar uma linha que aponte essa URL temporária para o seu IP. Assim:

xx.xx.xx.xx      www.site3.tmp
  1. No Linux e no Mac OS, o arquivo de hosts está localizado em /etc/hosts
  2. No Windows, ele está localizado em <Windows Installation>/system32/drivers/etc/hosts
    Por padrão, <Windows Installation> está em C:/Windows

2. Criando um alias

Se a edição do arquivo hosts não for uma solução, então essa é apenas outra opção

Isso exigiria que você editasse seu arquivo host virtual padrão. É o host virtual de www.mysite1.com , já que é o que está abrindo quando você vai para http://xx.xx.xx.xx/mysite3 .
Essa é a razão pela qual eu não gosto dessa solução, pois torna as coisas feias e confusas. E eu só uso isso como último recurso.

Na configuração do Host Virtual, adicione a seguinte linha (Alterando os caminhos conforme necessário, é claro):

Alias /mysite3 /home/mysite3/
# Notice that there isn't a trailing slash
# So this won't work: Alias /mysite3/ /home/mysite3/

Claro, se você precisar adicionar alguma configuração do apache ao diretório, o arquivo também precisará ser feito no mesmo arquivo host.

<Directory /home/site3/>
    AllowOverride All # Just an example
</Directory>

3. (Bônus) Combinando a solução

Isto é melhor que a segunda solução, mas não tão boa quanto a primeira

O arquivo host virtual padrão é o primeiro carregado pelo apache. E por padrão, o apache os carrega em ordem alfabética. Então, o que você pode fazer, você pode criar um novo arquivo de host virtual que precede todos os outros arquivos de hosts virtuais. Por exemplo, 000-default (que agora é feito na configuração padrão do apache2.4).

Em seguida, crie todos os seus aliases nesse arquivo de host, e o URL padrão desse host virtual irá para uma página 403. Então, no final, você teria isso:

www.mysite1.com   --> /home/mysite1
www.mysite2.com   --> /home/mysite2
xx.xx.xx.xx       --> 403 Error
xx.xx.xx.xx/site3 --> /home/site3
xx.xx.xx.xx/site4 --> /home/site4

Isso é preferível à segunda solução, pois essa pode entrar em conflito com seus outros sites. Por exemplo, ele pode ficar confuso com suas reescritas de URL.

    
por Dan 14.03.2014 / 10:02