我不知道如何解决我的问题。我的 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