DocumentRoot em vhosts.conf substitui o DocumentRoot global em httpd.conf

5

Estou executando o Apache 2.4 no Yosemite

Este é meu /private/etc/apache2/httpd.conf

ServerName 127.0.0.1:80
DocumentRoot "/Library/WebServer/Documents/home_www/"
<Directory "/Library/WebServer/Documents/home_www">   
    Options Multiviews FollowSymLinks
    MultiviewsMatch Any
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Com essa configuração, posso usar http://127.0.0.1 e http://localhost no navegador da Web e, em seguida, direciona-me para /Library/WebServer/Documents/home_www/index.html

Em seguida, adicionei Include /private/etc/apache2/extra/httpd-vhosts.conf porque gostaria de usar o vhost na minha máquina

Este é meu /private/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName tutor4dev.local 
    DocumentRoot "/Library/WebServer/Documents/home_www/xxx"
</VirtualHost>

Eu tentei usar sudo apachectl -S para exibir a configuração do vhost, há o resultado

VirtualHost configuration:
*:80                   xxx.local (/private/etc/apache2/extra/httpd-vhosts.conf:28)
ServerRoot: "/usr"
Main DocumentRoot: "/Library/WebServer/Documents/home_www/"
Main ErrorLog: "/private/var/log/apache2/error_log"
Mutex proxy: using_defaults
Mutex default: dir="/private/var/run/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
PidFile: "/private/var/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="_www" id=70
Group: name="_www" id=70

Eu posso usar http://xxx.local para acessar /Library/WebServer/Documents/home_www/xxx/index.html (vhost), mas depois de adicionar vhost, http://127.0.0.1 e http://localhost também me direcionam para /Library/WebServer/Documents/home_www/xxx/index.html em vez de /Library/WebServer/Documents/home_www/index.html

Por favor, oriente como corrigi-lo Obrigado

    
por Artisan 02.11.2014 / 12:25

1 resposta

4

Você tem apenas um VirtualHost e com * nele ( <VirtualHost *:80> ). Seu servidor principal nunca responderá a qualquer solicitação. Todas as solicitações serão tratadas pelo primeiro host virtual configurado, que é o servidor padrão no caso de hosts virtuais baseados em nome. Você deve criar um novo host virtual que deve aparecer antes de todos os outros no seu arquivo de configuração como:

# Main server, catches all requests that do not correspond to a ServerName/Alias
<VirtualHost *:80>
    ServerName 127.0.0.1
    DocumentRoot "/Library/WebServer/Documents/home_www/"
    ...
</VirtualHost>

Mais informações no documento do apache

    
por 05.11.2014 / 23:02