DocumentRoot w vhosts.conf przesłania globalny DocumentRoot w httpd.conf

5

Używam Apache 2.4 na Yosemite

To jest mój /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>

Z tym ustawieniem mogę korzystać http://127.0.0.1 i http://localhost w przeglądarce internetowej kieruje mnie do /Library/WebServer/Documents/home_www/index.html jak zwykle

Potem dodałem Include /private/etc/apache2/extra/httpd-vhosts.conf ponieważ chciałbym użyć vhosta na moim komputerze

To jest mój /private/etc/apache2/extra/httpd-vhosts.conf

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

Próbowałem użyć sudo apachectl -S aby wyświetlić konfigurację vhost, jest wynik

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

mogę użyć http://xxx.local mieć dostęp /Library/WebServer/Documents/home_www/xxx/index.html (vhost), ale po dodaniu vhosta, http://127.0.0.1 i http://localhost także kieruj mnie do /Library/WebServer/Documents/home_www/xxx/index.html zamiast /Library/WebServer/Documents/home_www/index.html

Proszę o wskazówki, jak to naprawić Dzięki

Artisan
źródło

Odpowiedzi:

4

Masz tylko jeden VirtualHost iz * w nim ( <VirtualHost *:80> ). Twój główny serwer nigdy nie odpowie na żadne żądanie. Wszystkie żądania będą obsługiwane przez pierwszy skonfigurowany host wirtualny, który jest domyślnym serwerem w przypadku hostów wirtualnych opartych na nazwach. Powinieneś utworzyć nowy wirtualny host, który musi pojawić się przed wszystkimi innymi w twoim pliku konfiguracyjnym, takimi jak:

# 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>

Więcej informacji w apache doc

Zimmi
źródło