基于 Apache 名称的虚拟主机和 DNS“www”问题

基于 Apache 名称的虚拟主机和 DNS“www”问题

我不知道如何解决我的问题。我的 Apache2 配置为服务 3 个不同的 VirtualHosts。这取决于域。

配置是:

NameVirtualHost example.eu:80
<VirtualHost example.eu:80>
        DocumentRoot /var/www2
        ServerName www.example.eu
        # Other directives here
</VirtualHost>

NameVirtualHost example.de:80
<VirtualHost example.de:80>
    DocumentRoot /var/www3/drupal
    ServerName www.example.de
</VirtualHost>

NameVirtualHost test.de:80
<VirtualHost test:80>
    DocumentRoot /var/www1/drupal
    ServerName test.de
</VirtualHost>

如果我访问 www.example**.de**,则会到达 example**.eu**(第一个配置的 VirtualHost)。test.de 也是一样。似乎 www. 被该配置误解了。我必须做什么才能让 Apache2 正确处理这个问题,以便无论有没有“www”。我每次都能到达我想要的地方。所有 DNS 条目都转到同一个 Apache2 服务器 IP。服务器应该相应地处理请求。带或不带“www”前缀。

最好的,ww

答案1

您误解了指令中的主机名的含义<VirtualHost>。它指的是IP地址虚拟主机在其中“监听”(Apache 可以将名称解析为 IP 地址)。因此,我建议您采用以下配置:

NameVirtualHost *:80
<VirtualHost *:80>
        DocumentRoot /var/www2
        ServerName example.eu
        ServerAlias www.example.eu
        # Other directives here
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www3/drupal
    ServerName example.de
    ServerAlias www.example.de
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www1/drupal
    ServerName test.de
    ServerAlias www.test.de
</VirtualHost>

如果您的虚拟主机监听的 IP 地址与默认 IP 地址不同,NameVirtualHost domain.name:80则必须使用。NameVirtualHost 1.2.3.4:80

相关内容