必须取消注释Include conf/extra/httpd-vhosts.conf,否则虚拟主机配置不生效;需确保路径正确、无重复加载、无绝对路径或反斜杠,并用httpd -t验证语法。

Include conf/extra/httpd-vhosts.conf 必须取消注释
Apache 默认不会加载 httpd-vhosts.conf,哪怕你改好了所有虚拟主机配置,只要这行还被注释着,端口监听就只是“摆设”——httpd.conf 里写的 Listen 8080 能生效,但 <VirtualHost *:8080> 根本不被解析。
打开 D:\xampp\apache\conf\httpd.conf,搜索 Include conf/extra/httpd-vhosts.conf,确认它前面**没有 #**。常见错误是只删了 # Virtual hosts 这行注释,却漏掉下一行的 #Include。
如果仍报错,用命令行验证是否加载成功:httpd -t(在 XAMPP 控制面板里点“Shell”或进 D:\xampp\apache\bin 执行),返回 Syntax OK 才算通过。
Include 路径写错会导致 Apache 启动失败
Include 指令对路径大小写和斜杠方向敏感,尤其在 Windows 下容易出问题:
-
Include conf/extra/httpd-vhosts.conf✅(推荐,Apache 内部路径解析兼容) -
Include "conf/extra/httpd-vhosts.conf"⚠️(加引号在旧版 Apache 可能报错) -
Include D:/xampp/apache/conf/extra/httpd-vhosts.conf❌(绝对路径易因安装路径不同失效,且反斜杠\会触发转义) -
Include conf\extra\httpd-vhosts.conf❌(Windows 反斜杠在 Apache 配置中不被识别)
XAMPP 自带的 httpd.conf 里默认就是相对路径写法,别手贱改成绝对路径。
Include 多次调用同一个文件会引发重复定义错误
有人为了“保险”,在 httpd.conf 里写了两遍 Include conf/extra/httpd-vhosts.conf,结果重启 Apache 时直接失败,错误日志里出现:
VirtualHost *:8080 overlaps with previous VirtualHost *:8080
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
这意味着同一端口被定义了两次。检查方法:
- 全局搜索
Include,确认只有一处启用httpd-vhosts.conf - 再搜
<VirtualHost,看是否在httpd.conf主体里也硬编码了一段虚拟主机(和httpd-vhosts.conf冲突) - 若用过第三方脚本或一键配置工具,可能悄悄追加了重复
Include
删掉冗余行,httpd -t 验证后再重启。
Include 不支持通配符,想批量加载需手动列明
Apache 2.4.x 的 Include **不支持** Include conf/extra/vhosts/*.conf 这种写法(那是 Nginx 的习惯)。XAMPP 默认也没启用模块来支持它。
如果你有多个项目要分拆配置,只能:
- 在
httpd-vhosts.conf末尾继续追加<VirtualHost>块(最简单) - 或在
httpd.conf里逐条写:Include conf/extra/vhost-a.conf、Include conf/extra/vhost-b.conf - 切勿尝试
Include conf/extra/vhost-*.conf—— Apache 会静默忽略,连报错都没有
多端口 + 多项目的实际维护成本,往往比单文件堆叠更高,除非团队协作需要隔离权限,否则别过早拆分。
真正卡住人的从来不是 Listen 或 VirtualHost 语法,而是 Include 是否生效、路径是否拼错、有没有重复加载——这三个点没核对清楚,改十遍配置也没用。

















