Apache虚拟主机配置异常:多域名指向同一页面求助
Apache虚拟主机跳转问题排查与解决
为什么第二个域名会跳转到第一个站点?
- 第二个虚拟主机的
ServerName/ServerAlias配置错误:如果lespouletsdefarinet.conf里的ServerName未准确设置为lespouletsdefarinet.fr,或缺少对应子域名的ServerAlias(比如www.lespouletsdefarinet.fr),Apache无法匹配该域名的请求,会自动 fallback 到默认主机。 - 第二个站点配置未正确启用:若你是手动复制文件到
sites-enabled而非使用a2ensite命令,可能未生成正确的软链接,导致Apache未识别该配置。 - Apache未加载新配置:修改配置后未执行重载命令,新配置未生效,请求仍按旧规则处理。
- DNS解析异常:
lespouletsdefarinet.fr的A记录可能指向错误IP,或本地DNS缓存未更新,但该可能性较低(毕竟第一个站点访问正常),可通过nslookup lespouletsdefarinet.fr验证。
为什么第一个站点被设为默认服务器?
Apache加载虚拟主机配置时,会按照sites-enabled目录下文件的字母排序顺序处理。当收到的HTTP请求Host头不匹配任何虚拟主机的ServerName/ServerAlias时,会使用第一个加载的虚拟主机作为默认响应。你的laiguilleconsoude.conf文件名以la开头,字母顺序早于lespouletsdefarinet.conf的le,因此被选为默认服务器。
解决步骤
检查第二个站点配置文件
打开/etc/apache2/sites-enabled/lespouletsdefarinet.conf,确保配置块符合规范:<VirtualHost *:80> ServerName lespouletsdefarinet.fr ServerAlias www.lespouletsdefarinet.fr DocumentRoot /var/www/lespouletsdefarinet ErrorLog ${APACHE_LOG_DIR}/lespouletsdefarinet_error.log CustomLog ${APACHE_LOG_DIR}/lespouletsdefarinet_access.log combined </VirtualHost>重点核对
ServerName和DocumentRoot路径的准确性。确保配置正确启用
用官方命令重新启用配置:sudo a2ensite lespouletsdefarinet.conf随后重载Apache使配置生效:
sudo systemctl reload apache2验证虚拟主机加载状态
执行apache2ctl -S,确认输出中包含lespouletsdefarinet.fr的条目,示例如下:*:80 is a NameVirtualHost default server laiguilleconsoude.fr (/etc/apache2/sites-enabled/laiguilleconsoude.conf:1) port 80 namevhost laiguilleconsoude.fr (/etc/apache2/sites-enabled/laiguilleconsoude.conf:1) port 80 namevhost lespouletsdefarinet.fr (/etc/apache2/sites-enabled/lespouletsdefarinet.conf:1)若未显示第二个条目,检查配置文件权限(需至少为
644,确保Apache可读)。调整默认服务器(可选)
如需修改默认主机,可修改目标配置文件的文件名,让其在字母排序中排在最前面(比如命名为000-default.conf),随后重载Apache即可。
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

