上次我尝试在我的开发机器上设置基于名称的虚拟主机时,我只是放弃并将网站映射到不同的端口。这一次,我正在努力做到这一点:)!
我已正确注册DNS条目并向服务器发送两个不同的标头:
Host: dev.site1.com
Host: dev.site2.com
然而,Apache让我很难将 dev.site2.com 映射到 dev.site1.com
这是我精简的配置:
Listen 80
ServerName localhost:80
NameVirtualHost *:80
<VirtualHost *>
ServerName dev.site1.com
DocumentRoot /www/site1
</VirtualHost>
<VirtualHost *>
ServerName dev.site2.com
DocumentRoot /www/site2
</VirtualHost>
我尝试过组合(如果没有效果):
ServerName site1.com
ServerName site2.com
ServerName site1.com
ServerAlias *.site1.com site1
ServerName site2.com site2
ServerAlias *.site2.com site2
我很高兴运行Apache 2.2并希望有一些人之前已经解决过这个问题并且可以帮助我。
答案 0 :(得分:4)
我注意到以下事项:
尝试为第二个虚拟主机创建单独的DocumentRoot。
作为一点帮助,这是我的(工作,修剪,URL重命名)httpd.conf:
NameVirtualHost *
<VirtualHost *>
DocumentRoot /var/www/site1
ServerName my.website.co.nz
ServerAlias www.my.website.co.nz
</VirtualHost>
<VirtualHost *>
DocumentRoot /var/www/joker
ServerName another.site.co.nz
ServerAlias www.another.site.co.nz
</VirtualHost>
快乐狩猎!
编辑:MrTopf有一个好点。 NameVirtualHost必须与VirtualHost指令完全匹配。请注意我的每个星号只有星号,而NameVirtualHost为*:80,VirtualHosts为*。答案 1 :(得分:4)
我通常也在VirtualHost指令中指定端口,但不确定这是否可能是问题:
<VirtualHost *:80>
ServerName dev.site2.com
DocumentRoot /www/site2
</VirtualHost>
(我甚至通常指定IP地址,以确保它真正收听正确的IP地址,以防服务器在某个时刻获得额外的IP地址。)
事实上我只是注意到documentation这一行:
请注意,指令的参数必须与NameVirtualHost指令的参数完全匹配。
所以问题可能是您使用端口指定了NameVirtualHost,但是VirtualHost指令没有指定最终不使它们匹配的指令。