必须在httpd.conf中添加Listen 8080并配置对应,同时保留Listen 80,才能使localhost和localhost:8080并存;仅改端口会导致默认访问失效。

XAMPP 默认只监听 80 端口,想让 http://localhost 和 http://localhost:8080 同时可用,关键不是“替换端口”,而是“增加监听 + 匹配虚拟主机”。直接改 Listen 80 为 Listen 8080 反而会让 localhost 失效。
必须在 httpd.conf 中添加额外 Listen 行
Apache 不会自动监听未声明的端口。仅靠配置 <virtualhost></virtualhost> 是无效的,必须先告诉 Apache “这个端口我要用”。
- 打开
C: mpppacheconfhttpd.conf - 找到
Listen 80这一行(通常在文件开头附近) - 在其下方新增一行:
Listen 8080(注意:不要写成Listen: 8080或Listen 8080:,冒号是常见错误) - 保存后重启 Apache;此时
netstat -ano | findstr :8080应能看到 Apache 进程在监听
VirtualHost 必须显式绑定端口且 DocumentRoot 要有效
<virtualhost></virtualhost> 的作用是把进来的 8080 请求路由到指定目录,但若目录不存在、权限不足或路径含中文/空格,就会返回 403 或 500 错误。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑
C: mpppacheconfextrahttpd-vhosts.conf,在末尾添加:
<VirtualHost *:8080>
ServerName localhost
DocumentRoot "C:/xampp/htdocs/myapp"
<Directory "C:/xampp/htdocs/myapp">
Require all granted
</Directory>
</VirtualHost>
DocumentRoot 路径必须存在,且推荐使用正斜杠 / 或双反斜杠 \,避免单反斜杠引发解析错误Order allow,deny + Allow from all,但新版必须用 Require all granted
myapp 目录下没有 index.php 或 index.html,访问会显示 403(禁止列出目录)——这不是配置失败,是预期行为80 和 8080 并存时,hosts 文件无需改动
只要两个 <virtualhost></virtualhost> 都设 ServerName localhost,就都能响应 localhost 域名下的对应端口请求。不需要在 C:WindowsSystem32driversetchosts 里做任何修改。
-
http://localhost→ 走<virtualhost></virtualhost>(默认已存在,或你手动补全) -
http://localhost:8080→ 走<virtualhost></virtualhost> - 若想用不同域名(如
dev1.test、dev2.test),才需要改hosts并在ServerName中对应填写 - 注意:浏览器缓存有时会让端口切换后加载旧页面,可尝试无痕窗口验证
端口冲突和 Apache 启动失败的快速排查
添加 Listen 8080 后 Apache 启动失败,90% 是端口被占用或语法错误。
- 检查是否被占用:
netstat -ano | findstr :8080;若看到 PID,用tasklist | findstr "PID"查进程,常见是 Skype、IIS、MySQL 的某些服务 - 检查
httpd.conf和httpd-vhosts.conf是否有拼写错误,比如<virtualhost> 写成 <code><virtualhosts>,或引号是中文全角</virtualhosts> - 查看 Apache 错误日志:
C: mpppachelogserror.log,最后一行通常明确提示哪一行出错 - SSL 端口(如
443)若也要并存,同样需在httpd-ssl.conf中添加Listen 8443并配置对应<virtualhost _default_:8443></virtualhost>
真正容易被忽略的是:Apache 对配置文件的加载顺序和权限指令版本兼容性很敏感,Require all granted 在旧版中不识别,而 Allow from all 在新版中会被拒绝——别盲目复制网上的配置,先确认你 XAMPP 的 Apache 版本(httpd -v)。

















