使用 apache 虚拟主机配置子域名问题

使用 apache 虚拟主机配置子域名问题

我正在尝试在 Apache 配置中使用虚拟主机来设置子域。我的设置如下:

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 中的主网站。

任何帮助均感激不尽。

答案1

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

<VirtualHost *:80>

答案2

以下是我在 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 正确呈现每个主机的子域的方法,并且我将所有这些设置放在直接从主 apache 配置中包含的虚拟主机文件中。

答案3

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

NameVirtualHost *:80

我还需要在 VirtualHost 指令中设置端口。因此

<VirtualHost *:80>

而不仅仅是

<VirtualHost *:80>

使用“httpd -S”命令显示虚拟主机未被占用

答案4

在端口 80 之后还有其他 Listen 指令吗?

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

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

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

相关内容