Apache - como eu crio uma exceção para o VirtualDocumentRoot de um vhost no httpd.conf?

1

Sou novo no Apache e estou pensando se há uma maneira de configurar o VirtualDocumentRoot para criar uma exceção para apenas um dos meus vhosts no meu servidor local. Atualmente todos os meus sites são armazenados em pastas com a convenção sitename.dev . Em httpd.conf , estou configurando dinamicamente VirtualDocumentRoot com base no nome do servidor:

# get the server name from the Host: header    
UseCanonicalName Off

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /path/to/logs/access.log vcommon
ErrorLog /path/to/logs/errors.log

VirtualDocumentRoot /path/to/vhosts/%0

Isso funciona muito bem para todos os meus sites com uma exceção ... a raiz do documento de um dos sites deve apontar para exception.dev/src/php em vez de apenas exception.dev .

De acordo com a resposta que encontrei aqui , soa como se VirtualDocumentRoot não pudesse ser definido com base em um condicional. Então, eu esperava que meu problema fosse resolvido definindo um alias de algum tipo para apontar exception.dev para o diretório correto.

Eu tentei adicionar VirtualScriptAlias , mas isso impede que o servidor Apache seja iniciado:

VirtualScriptAlias /path/to/vhosts/exception.dev /path/to/vhosts/exception.dev/src/php

Eu também tentei o mesmo tipo de coisa com ScriptAlias e apenas Alias , mas ainda sem sorte.

Há algo que estou sentindo falta aqui? Ou é o que estou tentando fazer impossível? Qualquer ajuda seria muito apreciada!

Ah, e se ajudar, aqui está minha saída se eu executar httpd -S :

httpd: Could not reliably determine the server's fully qualified domain name, using XXXXX.local for ServerName
VirtualHost configuration:
Syntax OK

UPDATE : Consegui que isso funcionasse modificando a resposta de Shane abaixo:

NameVirtualHost *

<VirtualHost *:80>
    ServerName exception.dev
    DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>

<VirtualHost *:80>
    ServerName default
    ServerAlias *.dev
    VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>
    
por luke 21.03.2013 / 04:21

1 resposta

1

Tenha um host virtual com sua configuração "normal", o VirtualDocumentRoot e outro com a configuração de exceção.

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName default
    ServerAlias *.dev
    VirtualDocumentRoot /path/to/vhosts/%0
</VirtualHost>

<VirtualHost *:80>
    ServerName exception.dev
    DocumentRoot /path/to/vhosts/exception.dev/src/php
</VirtualHost>
    
por 21.03.2013 / 05:06