似乎无法想出这一个。我想在我的本地机器上有2个ViritualHosts。两者都有不同的服务器名称这是我在httpd-vhosts.conf
中的内容<VirtualHost *:80>
DocumentRoot "/Users/MyName/Documents/Work/dev/project"
ServerName work.local
ErrorLog "/private/var/log/apache2/work.local.com-error_log"
CustomLog "/private/var/log/apache2/work.local.com-access_log" common
<Directory "/Users/MyName/Documents/Work/dev/project">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/MyName/Documents/Personal/Dev/project"
ServerName dev.shop
ErrorLog "/private/var/log/apache2/dev.shop.com-error_log"
CustomLog "/private/var/log/apache2/dev.shop.com-access_log" common
<Directory "/Users/MyName/Documents/Personal/Dev/project">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这是我的主持人档案:
127.0.0.1 work.local
127.0.0.1 dev.shop
只有一个工作,无论我先放哪个,第二个总是进入第一个的DocRoot。所以ServerName本身可以工作,但是它使用了错误的DocRoot。
为什么哦为什么?我错过了什么?
顺便说一下,我在小牛队。
答案 0 :(得分:0)
hosts文件的语法应为:
127.0.0.1 inspire.local dev.shop
IP的所有别名必须在同一行。这与Apache无关,它通常是系统解析/etc/hosts
的方式。
答案 1 :(得分:0)
想出来。
NameVirtualHost *:80
结果NameVirtualHost
指示如何获取VirtualHosts。所以在我的例子中,两个Virtualhost都被声明为:
<VirtualHost 127.0.0.1:80>
这与我的NameVirtualHost
不匹配,因此默认使用第一个。
我将它们改为完全匹配,如下所示:
<VirtualHost *:80>
现在他们工作了。
该死。
希望这有助于其他人。