DocumentRoot так, в виртуальных доменов.conf переопределяет глобальный DocumentRoot в httpd.conf

я запускаю Apache 2.4 на Yosemite

это мой /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>

С этой настройкой я могу использовать http://127.0.0.1 и http://localhost в веб-браузере, то он направляет меня к /Library/WebServer/Documents/home_www/index.html как обычно

затем я добавил Include /private/etc/apache2/extra/httpd-vhosts.conf потому что я хотел бы использовать vhost на моей машине

это мой /private/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin jeud@hotmail.com
    ServerName tutor4dev.local 
    DocumentRoot "/Library/WebServer/Documents/home_www/xxx"
</VirtualHost>

я пытался использовать sudo apachectl -S для отображения конфигурации vhost, есть результат

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

я могу использовать http://xxx.local получить доступ к /Library/WebServer/Documents/home_www/xxx/index.html (vhost), но после добавления vhost,http://127.0.0.1 и http://localhost тоже мне /Library/WebServer/Documents/home_www/xxx/index.html вместо /Library/WebServer/Documents/home_www/index.html

пожалуйста, руководство, как это исправить
Спасибо

5
задан Artisan
источник

1 ответов

У вас есть только один VirtualHost, и с * в нем (<VirtualHost *:80>). Ваш главный сервер никогда не ответит на запрос. Все запросы будут обработаны первым настроенным виртуальным узлом, который является сервером по умолчанию в случае виртуальных узлов на основе имен. Вы должны создать новый виртуальный хост, который должен появиться перед всеми остальными в вашем конфигурационном файле(ах) как:

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

подробнее на apache doc

4
отвечен Zimmi 2014-11-05 22:02:01
источник

Другие вопросы apache-http-server osx-yosemite