我在 Yosemite 上运行 Apache 2.4
这是我的/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 [email protected]
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
您只有一个 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>
更多信息阿帕奇文档