XAMPP 默认只监听 80 端口,要实现一个 XAMPP 同时用多个端口访问不同项目,必须修改三处:在 httpd.conf 中添加 Listen 端口并启用 httpd-vhosts.conf;在 httpd-vhosts.conf 中为每个端口配置完整 VirtualHost 块,含绝对路径 DocumentRoot 和 Require all granted 权限;否则将出现 403 错误或请求无法到达项目目录。

直接说结论:XAMPP 默认只监听 80 端口,要实现“一个 XAMPP 同时用多个端口访问不同项目”,必须改三处——httpd.conf 加监听端口、开 httpd-vhosts.conf、补全每个 <virtualhost></virtualhost> 的 <directory></directory> 权限配置。漏掉任意一项,不是 403 错误就是请求根本进不到项目目录。
在 httpd.conf 中添加 Listen 并启用 vhosts
Apache 不会自动监听你没声明的端口。只改 httpd-vhosts.conf 是无效的。
- 打开
XAMPPpacheconfhttpd.conf,找到Listen 80这一行,在它下面新增你需要的端口,比如:Listen 8081、Listen 8082 - 确认
#Include conf/extra/httpd-vhosts.conf这行开头的#已删除(即取消注释),否则所有VirtualHost配置都不生效 - 检查
ServerName行是否被意外改过,比如写成ServerName localhost:8081却没配对应端口,会导致 Apache 启动失败
在 httpd-vhosts.conf 中为每个端口写完整 VirtualHost 块
仅写 DocumentRoot 和 ServerName 不够,缺 <directory></directory> 就是 403 —— 这是最常卡住人的地方。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 每个端口对应一个
<virtualhost></virtualhost>块,ServerName推荐统一填localhost(不带端口)或留空,避免和 hosts 冲突 -
DocumentRoot必须是绝对路径,结尾不能有斜杠,例如:"C:/xampp/htdocs/project-a",不是"C:/xampp/htdocs/project-a/" -
<directory></directory>块内必须包含权限指令,XAMPP 2.4+ 推荐用:Require all granted;若用旧语法(如 Apache 2.2),则需Order allow,deny+Allow from all - 不要依赖默认的
<directory></directory>全局配置,它的Require all denied会兜底拦截所有未显式放行的目录
绕过 403 错误的关键:Directory 权限与路径一致性
报 “Access forbidden!” 不一定是权限没开,更可能是路径拼错、大小写不一致、或符号链接未启用。
- Windows 下路径分隔符用正斜杠
/或双反斜杠\,单反斜杠会导致解析失败(如"C: mpphtdocs"是错的) - 确保项目目录真实存在,且 Apache 进程有读取权限(一般不用动,但若放在 OneDrive 或用户文档深层路径下可能受限)
- 如果项目含 PHP,记得检查
php.ini中short_open_tag是否为On(尤其用短标签时),否则页面空白但无报错 - 验证配置是否合法:进
XAMPPpachein目录,命令行运行httpd -t,返回Syntax OK才能重启服务
真正容易被忽略的点是:改完配置后,浏览器可能缓存了 403 响应或 DNS 解析结果。别急着重装 XAMPP,先关掉所有浏览器窗口,用无痕模式试 http://localhost:8081,再看 Apache 错误日志(XAMPPpachelogserror.log)里最后一行——那里写的才是 Apache 实际卡在哪一步。

















