XAMPP默认仅监听80端口,需手动在httpd.conf中添加Listen指令(如Listen 8080)并配置httpd-vhosts.conf中的VirtualHost,同时启用AllowOverride All及Require all granted,才能使CMSWing等多站点共存。

直接说结论:XAMPP 默认只监听 80 端口,要让 CMSWing 和其他站点共存,必须手动开启额外端口并配好 VirtualHost,否则所有请求都会被 Apache 拦在门口——不是 404,就是 403 或直接拒绝连接。
修改 httpd.conf 添加监听端口
Apache 不会自动监听你“想用”的端口,必须显式声明。打开 D:\xampp\apache\conf\httpd.conf(路径按你实际安装位置调整),找到 Listen 80 这一行,在它下面追加你要给 CMSWing 用的端口,比如 8080:
Listen 80 Listen 8080
注意:8080 是常见选择,但若你机器上已运行 Docker、VS Code Server 或其他服务,得先用 netstat -ano | findstr :8080 确认该端口空闲;Windows 下低于 1024 的端口(如 80、443)需要管理员权限启动 Apache,非必要别硬占。
- 不要删掉
Listen 80,否则 XAMPP 控制面板首页(http://localhost)就打不开了 - 每行一个端口,不能写成
Listen 80, 8080 - 改完保存,暂时不用重启 Apache——等
httpd-vhosts.conf也配好再一起重启
启用并编辑 httpd-vhosts.conf
默认情况下,XAMPP 的虚拟主机配置是被注释掉的。打开 D:\xampp\apache\conf\extra\httpd-vhosts.conf,先确认顶部这行没被注释:
Include conf/extra/httpd-vhosts.conf
如果前面有 #,删掉它。然后在文件末尾添加 CMSWing 的虚拟主机块:
<virtualhost>
DocumentRoot "D:/xampp/htdocs/cmswing"
ServerName localhost:8080
<directory>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</directory></virtualhost>
关键点:
-
DocumentRoot必须指向 CMSWing 实际解压后的完整路径,不能漏掉子目录(比如你把 CMSWing 放在htdocs/cmswing,就得写全 -
ServerName写localhost:8080是为了匹配 URL,不是必须填域名;如果后续要配cmswing.test这类域名,这里就写cmswing.test,同时 hosts 也要加 -
Require all granted是 Apache 2.4+ 的权限写法,旧教程里的Allow from all在新版里会直接报错 500
检查 hosts 文件和目录权限
浏览器访问 http://localhost:8080 前,两件事必须做完:
- 用记事本(**以管理员身份运行**)打开
C:\Windows\System32\drivers\etc\hosts,确保有这一行:127.0.0.1 localhost(XAMPP 自带一般已有,但有时被杀毒软件清过) - CMSWing 所在目录(如
D:\xampp\htdocs/cmswing)不能有中文路径或空格,否则 Apache 可能拒绝加载.htaccess或解析路由失败 - 如果访问时出现 403 Forbidden,大概率是
<directory></directory>块里漏了Require all granted,或者 Apache 没读到这个配置(检查httpd.conf中Include是否启用)
改完所有文件后,务必通过 XAMPP 控制面板 **完全停止再启动 Apache**,热重载不生效。
CMSWing 特有的 .htaccess 兼容问题
CMSWing 依赖 .htaccess 做 URL 重写,但 XAMPP 默认禁用此功能。回到 httpd.conf,搜索 AllowOverride,找到类似这段:
<directory>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Require all granted
</directory>
把其中的 AllowOverride None 改成 AllowOverride All。否则即使虚拟主机配对了,CMSWing 的后台路由(如 /admin)也会 404。
这个设置影响全局,如果你还跑着其他老项目,它们的 .htaccess 也可能意外生效——真有冲突,就别偷懒,单独为 CMSWing 目录再套一层 <directory></directory> 块来精确控制。











