能实现,但必须同时改httpd.conf和httpd-vhosts.conf;Listen指令需逐行添加端口(如Listen 8080),并确保Include httpd-vhosts.conf已启用,每个VirtualHost须绑定对应端口且含绝对路径的Directory权限配置(Require all granted),缺一不可。

能实现,但必须同时改 httpd.conf 和 httpd-vhosts.conf,漏掉任一环节都会 403 或 无法访问。
Listen 指令必须显式添加多个端口
Apache 默认只监听 80,新增端口不能靠“改 ServerName”或“只配 VirtualHost”生效。必须在 httpd.conf 的 Listen 区域逐行写明:
-
Listen 80(保留原端口,避免影响默认项目) -
Listen 8080(日文版) -
Listen 8081(中文版) - 端口号不能被其他程序占用(可用
netstat -ano | findstr :8081检查)
改完不重启 Apache,新端口不会生效 —— XAMPP 控制面板里点 Stop 再 Start 才算真正重载。
VirtualHost 必须绑定对应端口且含完整 Directory 权限
只写 <VirtualHost *:8080> 不够,DocumentRoot 下的目录若无显式授权,Apache 会沿用全局拒绝策略,直接返回 Access forbidden!。
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-vhosts.conf 为例):
<VirtualHost *:8080>
DocumentRoot "D:/xampp/htdocs/jp"
ServerName localhost
<Directory "D:/xampp/htdocs/jp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
-
ServerName填localhost即可,不用加端口(localhost:8080是浏览器行为,不是 Apache 配置要求) -
<Directory>路径必须和DocumentRoot完全一致,且是**绝对路径**(Windows 下注意斜杠方向或用正斜杠) -
Require all granted是 Apache 2.4+ 的权限语法,旧写法Allow from all在新版中无效
httpd.conf 中的全局 Directory 权限不能覆盖 VirtualHost 设置
有些教程让你直接改 httpd.conf 里的根目录权限,比如把 <Directory /> 改成 Allow from all —— 这属于粗暴放行,存在安全风险,且可能干扰 VirtualHost 的独立权限控制。
- 正确做法:只在每个
<VirtualHost>内部定义<Directory>,不碰全局配置 - 如果已改过全局
<Directory />,建议还原为默认的Require all denied,避免权限混乱 - 确保
httpd.conf中#Include conf/extra/httpd-vhosts.conf这行已取消注释(去掉开头的#),否则httpd-vhosts.conf根本不加载
验证配置是否生效的三步检查法
启动失败或访问异常时,别急着重启,先按顺序确认:
- 运行
httpd -t(在XAMPP\apache\bin目录下执行),输出Syntax OK才代表配置无语法错误 - 查看
error.log(路径:XAMPP\apache\logs\error.log),搜索关键词permission denied或directory not found - 浏览器访问
http://localhost:8080时,若显示 Apache 默认页,说明请求没进到你的VirtualHost,大概率是Include httpd-vhosts.conf没开启,或端口没Listen
多端口本质是多个独立服务实例共存,每个端口背后都是一套完整的 DocumentRoot + Directory 权限 + 路由逻辑,少一个环节,就卡在 403 或 404 上——这不是玄学,是 Apache 的分层权限模型决定的。

















