使用apache虚拟主机问题configuration子域

我正在尝试在我的Apacheconfiguration中使用虚拟主机来设置子域。 我的设置是:

NameVirtualHost *:80 <VirtualHost *> ServerName www.website.com DocumentRoot "/var/www/html" </VirtualHost> <VirtualHost *> ServerName wiki.website.com DocumentRoot "/var/www/dekiwiki" </VirtualHost> 

当我重新启动Apache时,www.website.com和wiki.website.com都转到/ var / www / html中的主网站。

任何帮助赞赏。

在VirtualHost中必须使用与NameVirtualHost中相同的签名:

 <VirtualHost *:80> 

这里是我如何做我的apache2服务器上的子域…

 NameVirtualHost *:80 # Many other hosts... <VirtualHost servers.international-anarchy.com> ServerName servers.international-anarchy.com DocumentRoot "/http/international-anarchy.com/servers/" <Directory "/http/international-anarchy.com/servers/"> Options +Indexes FollowSymLinks AllowOverride None Allow from all Order allow,deny </Directory> </VirtualHost> <VirtualHost status.international-anarchy.com> ServerName status.international-anarchy.com DocumentRoot "/http/international-anarchy.com/status/" <Directory "/http/international-anarchy.com/status/"> Options +Indexes FollowSymLinks AllowOverride All Allow from all Order allow,deny </Directory> </VirtualHost> 

这就是我如何让apache2正确地为每个主机渲染子域,并将所有这些设置放在一个虚拟主机文件中,该文件直接从主apacheconfiguration中包含。

我发现了这个问题。 由于虚拟主机被设置为:

 NameVirtualHost *:80 

我还需要在VirtualHost指令中设置端口。 所以

 <VirtualHost *:80> 

而不仅仅是

 <VirtualHost *:80> 

使用'httpd -S'命令显示虚拟主机没有被拾取

在80端口之后是否有任何Listen指令?

如果是这样,您可能需要将<VirtualHost *>更改为<VirtualHost *:80>

您可以指定一个:端口来更改匹配的端口。 如果未指定,则默认为与主服务器的最新“侦听”语句相同的端口 。 您也可以指定:*以匹配该地址上的所有端口

http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost