Substituir Hospedagem Virtual em Massa para um VirtualHost

1

Não tenho certeza se essa pergunta foi redigida corretamente.

Basicamente, eu o configurei através do link para que eu tenha que criar um pasta (como example.test) na minha pasta ~ / Sites e eu posso ir para o link (com minhas correspondências de arquivos de hosts).

Estou trabalhando em alguns projetos que têm um framework instalado em um nível acima do diretório público, então eu queria saber se eu poderia substituir o vhost em massa por um único vhost.

Eu tentei o seguinte:

# I want this...
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /Users/cameron/Sites/laravel.test/public
    ServerName laravel.test
</VirtualHost>

# ...to override this only for laravel.test
UseCanonicalName Off
VirtualDocumentRoot /Users/cameron/Sites/%0

O framework Laravel PHP instala o framework em nível acima do público como eu estava falando, então quando eu vou para link , eu quero que ele vá para /Users/cameron/Sites/laravel.test/public em vez de /Users/cameron/Sites/laravel.test/ se isso fizer sentido ...

Mas o código acima não funciona. Ele basicamente ignora qualquer coisa antes das duas últimas linhas.

Então minha pergunta é ... existe uma maneira de conseguir o que eu quero? Não necessariamente a abordagem que estou tentando, mas eu tenho uma tonelada de sites locais e 99% deles funcionam muito bem sob a abordagem de host virtual em massa, eu só ocasionalmente quero substituir esse comportamento.

    
por CWSpear 15.08.2012 / 02:25

1 resposta

3

A documentação para VirtualDocumentRoot diz para usar none para ativá-lo off, então eu assumo o que você precisa fazer é adicionar isso à sua seção <VirtualHost> :

<VirtualHost *:80>
    DocumentRoot /Users/cameron/Sites/laravel.test/public
    VirtualDocumentRoot none
    ServerName laravel.test
</VirtualHost>

Isso não é suficiente: ao usar NameVirtualHost , se uma solicitação recebida não corresponder ao bloco ServerName / ServerAlias de qualquer <VirtualHost> , o primeiro bloco <VirtualHost> será usado, não Não importa o nome que tinha. Neste caso, ele causa todos os outros nomes de host para esta diretiva VirtualHost também.

Uma maneira possível de corrigir isso seria mover a diretiva VirtualDocumentRoot para um bloco <VirtualHost> colocado na configuração antes de qualquer outro site. O ServerName deste bloco não deve importar, algo como:

<VirtualHost *:80>
     ServerName bogusname
     UseCanonicalName Off
     VirtualDocumentRoot /Users/cameron/Sites/%0
</VirtualHost>

O nome falso deve garantir que este VirtualHost será usado apenas no caso "padrão" de nenhum outro VirtualHosts que corresponda ao pedido.

    
por 15.08.2012 / 02:40