XAMPP 的 httpd-vhosts.conf 本身不支持多端口,真正生效需在 httpd.conf 中配置 Listen 指令并确保 Include 行未被注释;否则即使 VirtualHost 写对也无法访问。

直接说结论:XAMPP 的 httpd-vhosts.conf 本身不“支持多端口”——它只负责把某个端口(比如 *:8080)绑定到某个目录;真正让多端口生效的,是 httpd.conf 里的 Listen 指令。漏掉这一步,VirtualHost 配置再对也访问不了。
为什么加了 VirtualHost *:8080 还打不开?
常见错误现象是浏览器卡住、连接被拒绝,或直接报 ERR_CONNECTION_REFUSED。
-
httpd.conf中没加Listen 8080(或对应端口),Apache 根本不监听该端口 -
Include conf/extra/httpd-vhosts.conf这行仍被注释(前面有#),整个httpd-vhosts.conf文件没被加载 - Windows 防火墙或杀毒软件拦截了新端口(尤其 8080 以外的非常用端口)
httpd-vhosts.conf 里怎么写多端口配置?
每个 VirtualHost 块必须明确指定端口号,且 DocumentRoot 必须是绝对路径(不能以 ./ 或 htdocs/xxx 开头),末尾不加斜杠。
示例(添加到 httpd-vhosts.conf 文件末尾):
<VirtualHost *:8080>
DocumentRoot "C:/xampp/htdocs/project-a"
ServerName localhost:8080
<Directory "C:/xampp/htdocs/project-a">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8081>
DocumentRoot "C:/xampp/htdocs/project-b"
ServerName localhost:8081
<Directory "C:/xampp/htdocs/project-b">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- 不要用
ServerAlias替代ServerName,否则部分 Apache 版本会忽略该虚拟主机 - 如果项目依赖
.htaccess(如 Laravel、WordPress),AllowOverride All不可省略 -
Require all granted是 Apache 2.4+ 的权限语法;若用旧版 XAMPP(Apache 2.2),需改用Order allow,deny+Allow from all
为什么访问时总报 403 Forbidden?
绝大多数情况不是 httpd-vhosts.conf 写错了,而是全局目录权限没放开。
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 中找到类似这段(通常在 210–230 行附近):
<Directory />
AllowOverride none
Require all denied
</Directory>
必须改成:
<Directory />
AllowOverride none
Require all granted
</Directory>
- 这个配置控制 Apache 对所有路径的默认访问策略,
VirtualHost里的<Directory>只能在此基础上收紧,不能突破它 - 改完后务必运行
httpd -t(在 XAMPP 控制面板里点 “Shell” 输入)验证语法,避免重启失败 - Windows 下修改
httpd.conf后需以管理员身份重启 Apache,否则可能因权限不足无法加载新配置
实际访问时要注意什么?
配置生效 ≠ 能直接用 http://localhost:8080 访问——你得确认三件事:
- 浏览器地址栏输的是
http://localhost:8080,不是https://(除非你配了 SSL) - 对应目录下有可识别的首页文件(如
index.php、index.html),否则会报 403(目录列表被禁)或 404 - 如果要用自定义域名(如
dev.project-a.com),必须同时在系统hosts文件中加映射:127.0.0.1 dev.project-a.com,否则 DNS 解析失败
最常被忽略的一点:改完所有配置后,必须彻底停止再启动 Apache(不是“重启”,XAMPP 的“重启”有时只重载模块,不重读 httpd.conf)。直接点“Stop”,等状态变灰,再点“Start”。

















