xampp多端口运行processwire需三步:一、在httpd.conf中取消include conf/extra/httpd-vhosts.conf注释并添加listen端口;二、在httpd-vhosts.conf中为每个站点配置virtualhost,documentroot与directory路径严格一致且含require all granted、allowoverride all;三、用httpd -t验证语法,避免403、500或跳转默认页。

ProcessWire 能在 XAMPP 多端口下跑,但必须手动配 httpd.conf 和 httpd-vhosts.conf,漏掉任意一步都会 403、500 或直接 fallback 到默认站点。
确认 Apache 已启用虚拟主机支持
默认 XAMPP 不加载 httpd-vhosts.conf,即使你改了里面的内容也完全不生效。打开 D:\xampp\apache\conf\httpd.conf,搜索 Include conf/extra/httpd-vhosts.conf,确保前面没有 #。如果被注释了,删掉它——这是多端口失效最常被忽略的一步。
顺手检查这一行是否还存在且未被改乱:ServerName localhost:80。如果误写成 localhost:8080,Apache 启动会失败,XAMPP 控制面板里 Apache 按钮点一下就变灰。
在 httpd.conf 中添加监听端口
Apache 不会自动监听你写在 VirtualHost 里的端口,必须先在 httpd.conf 顶层显式声明。找到 Listen 80 所在位置,在它下方追加你需要的端口,比如:
Listen 80 Listen 8080 Listen 8081
注意:
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
- 端口号不能是系统保留端口(
1024以下建议避开,除非你明确知道没被占用) - 如果提示“Address already in use”,用
netstat -ano | findstr :8080查进程 ID,再用taskkill /PID 1234 /F杀掉 - 改完必须重启 Apache,否则新端口不会注册进监听队列
为 ProcessWire 项目单独配置 VirtualHost 块
编辑 D:\xampp\apache\conf\extra\httpd-vhosts.conf,每个 ProcessWire 站点对应一个 <virtualhost></virtualhost> 块。关键不是写得有多全,而是三处必须对齐:
-
DocumentRoot必须是绝对路径,结尾不带斜杠(例如D:/xampp/htdocs/pw-blog,不是D:/xampp/htdocs/pw-blog/) -
<directory></directory>路径要和DocumentRoot完全一致,且必须包含Require all granted - ProcessWire 依赖
.htaccess重写,所以AllowOverride必须设为All,否则后台 404、页面路由失效
示例(适配 ProcessWire 3.x):
<virtualhost>
DocumentRoot "D:/xampp/htdocs/pw-blog"
ServerName localhost
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
验证配置并排查典型错误
改完所有文件后,别急着刷浏览器。先在命令行执行:httpd -t(路径是 D:\xampp\apache\bin\httpd.exe -t)。返回 Syntax OK 才代表配置无硬错。
常见失败现象和对应点:
- 访问
localhost:8080显示 403 Forbidden → 检查<directory></directory>块里有没有Require all granted,以及路径拼写是否大小写/斜杠全对 - 后台页面空白或 CSS/JS 404 →
AllowOverride没设成All,或者.htaccess被 Windows 隐藏了(显示隐藏文件确认存在) - 输入地址后跳转到 XAMPP 默认页 →
Include conf/extra/httpd-vhosts.conf还被注释着,或者端口没在Listen里声明
ProcessWire 对重写规则敏感,AllowOverride All 这一行最容易被复制教程时漏掉或写成 None,务必逐字核对。










