5

Я использую 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

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

1 ответ1

4

У вас есть только один 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .