XAMPP不支持端口+域名联合绑定,需为每个端口单独配置VirtualHost:先在httpd.conf中添加Listen指令启用端口(如8080、8081),再在httpd-vhosts.conf中为各端口定义对应ServerName与DocumentRoot,并在hosts中将域名映射至127.0.0.1。

XAMPP 本身不支持「一个端口绑定多个域名」或「不同端口直接映射不同域名」这种混合模式——http://www.a.com:8080 和 http://www.b.com:8081 看似可行,但实际生效的是「端口优先匹配」,域名只是辅助标识;真正起作用的,是 Apache 的 VirtualHost 匹配逻辑:它先看请求发往哪个端口,再看 ServerName 是否匹配该端口下的配置。所以你要的不是“端口+域名联合绑定”,而是「为每个端口单独定义一套域名行为」,且必须确保 DNS 层(hosts)和 Apache 配置严格对齐。
修改 httpd.conf 添加监听端口
Apache 默认只监听 80,要让 www.a.com:8080 可达,必须显式声明该端口:
- 打开
D:\xampp\apache\conf\httpd.conf - 搜索
#Listen 80,去掉注释,并在下方新增你需要的端口,例如:Listen 80 Listen 8080 Listen 8081
- 注意:Windows 下某些端口(如
1024以下)需管理员权限才能绑定;8080、8081是安全选择 - 如果改完启动失败,检查是否被其他程序(如 Skype、IIS)占用——用命令
netstat -ano | findstr :8080查进程 ID,再用任务管理器结束
在 httpd-vhosts.conf 中按端口写死 ServerName
关键点:每个 <VirtualHost *:8080> 块里,ServerName 必须与你 hosts 中写的完全一致,且不能复用同一端口多个域名
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 确保
httpd.conf中已启用虚拟主机配置:Include conf/extra/httpd-vhosts.conf前面没有# - 编辑
D:\xampp\apache\conf\extra\httpd-vhosts.conf,添加如下结构(注意端口与域名一一对应):<VirtualHost *:8080> ServerName www.a.com DocumentRoot "D:/xampp/htdocs/a" <Directory "D:/xampp/htdocs/a/"> Require all granted </Directory> </VirtualHost> <VirtualHost *:8081> ServerName www.b.com DocumentRoot "D:/xampp/htdocs/b" <Directory "D:/xampp/htdocs/b/"> Require all granted </Directory> </VirtualHost> -
ServerName必须小写、无协议、无路径,比如写成http://www.a.com或www.a.com/都会失效 - 不要在同一个端口下配置多个
ServerName(Apache 不支持端口内基于 Host 头的多域名路由,那是反向代理的事)
配置系统 hosts 文件指向本机
浏览器访问 www.a.com:8080 时,DNS 解析必须返回 127.0.0.1,否则根本连不到你的 Apache
- 用管理员权限打开记事本,编辑
C:\Windows\System32\drivers\etc\hosts - 在文件末尾添加两行(IP 地址必须是
127.0.0.1,不能写localhost):127.0.0.1 www.a.com 127.0.0.1 www.b.com
- 保存失败?说明权限不足——把 hosts 拷到桌面改好,再复制回原路径覆盖(Win10/11 默认禁止直接写 etc)
- 改完后清 DNS 缓存:
ipconfig /flushdns,否则旧缓存可能导致跳转失败
最容易被忽略的一点:Apache 启动后不会自动重载 hosts,但浏览器会缓存 DNS 结果;哪怕配置全对,第一次访问失败后不刷新 DNS 缓存,就永远打不开。另外,httpd-vhosts.conf 中若漏写 <Directory> 权限块,Apache 2.4+ 会直接拒绝访问并返回 403 错误——这个错误不提示具体原因,只显示“Forbidden”,排查起来特别隐蔽。

















