Ubuntu/Apache多站点HTTP访问显示其他站点内容问题求助
解决你的Apache虚拟主机HTTP跳转问题
嗨,我来帮你搞定这个问题~你碰到的核心问题其实很明确:HTTP协议下的裸域名bbbbb.com没有对应的虚拟主机配置,Apache在找不到匹配的虚拟主机时,会自动用第一个加载的虚拟主机(也就是www.aaaaa.com的配置),所以才会显示错误的内容。而HTTPS的https://bbbbb.com正常,是因为你的SSL配置里已经包含了这个裸域名的匹配规则,或者证书覆盖了它。
下面是具体的解决步骤,一步步来就行:
1. 先确认当前的虚拟主机状态
先跑个命令看看Apache现在加载的所有虚拟主机,这样能明确问题所在:
apache2ctl -S
执行后你会看到,*:80(HTTP端口)下面没有bbbbb.com的条目,第一个出现的就是www.aaaaa.com的配置,这就是为什么访问http://bbbbb.com会跳过去的原因。
2. 给裸域名配置HTTP跳转(推荐强制HTTPS)
最合理的做法是把所有HTTP的bbbbb.com和www.bbbbb.com请求都强制跳转到HTTPS,既解决内容错误,又更安全。
去/etc/apache2/sites-available/目录下,新建一个配置文件(比如叫bbbbb-http.conf),或者修改你现有的HTTP配置文件,添加以下内容:
<VirtualHost *:80> ServerName bbbbb.com ServerAlias www.bbbbb.com # 这里直接跳转到HTTPS的www版本,如果你想跳转到裸域名的HTTPS,把后面改成https://bbbbb.com/就行 Redirect permanent / https://www.bbbbb.com/ </VirtualHost>
3. 启用配置并重启Apache
配置写完后,先启用这个站点配置:
a2ensite bbbbb-http.conf
然后重启Apache让配置生效:
systemctl restart apache2
4. 验证效果
再跑一次apache2ctl -S,确认*:80下面已经有bbbbb.com和www.bbbbb.com的条目了。之后访问http://bbbbb.com,应该会自动跳转到HTTPS的正确页面,显示你预期的内容。
额外提醒
- 记得确认你的SSL证书包含了
bbbbb.com这个裸域名哦,很多证书默认会覆盖主域名和www子域名,但保险起见还是查一下,如果没包含的话,得重新申请覆盖该域名的证书。 - 如果之前你已经有
www.bbbbb.com的HTTP配置文件,也可以直接在里面加一行ServerAlias bbbbb.com,再加上跳转规则,不用新建文件也行。
内容的提问来源于stack exchange,提问作者drexsien
相关产品推荐
相关产品推荐

