XAMPP本身不支持多语言切换功能,所谓“多语言”实为通过配置多个端口(如8080、8081)分别托管不同语言版本的网站,需手动修改httpd.conf和httpd-vhosts.conf并设置对应DocumentRoot与Directory权限。

XAMPP 本身不提供“多国语言切换”功能,它只是本地开发环境;所谓“多语言切换”,实际是通过多个端口分别托管不同语言版本的网站(如 localhost:8080 托管日文版、localhost:8081 托管中文版),靠人工访问不同端口来区分——不是同一个 URL 下点按钮切语言。
修改 httpd.conf 添加监听端口
Apache 默认只监听 80 端口。要支持多语言站点并行运行,必须显式声明其他端口:
- 打开
E:\XAMPP\apache\conf\httpd.conf(路径按你实际安装位置调整) - 找到
Listen 80这一行,在其下方添加你要用的端口,例如:Listen 8080Listen 8081 - 确保这些端口未被系统或其他程序占用(可用
netstat -ano | findstr :8080检查) - 顺手确认
Include conf/extra/httpd-vhosts.conf这行前面没有#(即已启用虚拟主机配置)
在 httpd-vhosts.conf 中为每个端口配独立站点
每个端口对应一个语言版本,需用 明确绑定 DocumentRoot 和权限:
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
- 编辑
E:\XAMPP\apache\conf\extra\httpd-vhosts.conf - 为日文版添加(假设放在
E:\XAMPP\htdocs\jp):<virtualhost><br> ServerName localhost<br> DocumentRoot "E:/XAMPP/htdocs/jp"<br><directory><br> Options Indexes FollowSymLinks<br> AllowOverride All<br> Require all granted<br></directory><br></virtualhost>
- 为中文版添加(假设放在
E:\XAMPP\tx_cn):<virtualhost><br> ServerName localhost<br> DocumentRoot "E:/XAMPP/tx_cn"<br><directory><br> Options Indexes FollowSymLinks<br> AllowOverride All<br> Require all granted<br></directory><br></virtualhost>
- 注意:
块必须写,且路径必须和DocumentRoot完全一致(正斜杠或反斜杠统一,Windows 下推荐用正斜杠)
绕过 403 “Access forbidden!” 错误的关键权限设置
即使端口和路径都对,Apache 2.4+ 默认会拒绝所有目录访问,导致 403。这不是跨域问题,是服务端权限策略:
- 打开
httpd.conf,搜索Require all denied - 找到类似这样的全局段落(通常在 210–230 行附近):
<directory></directory><br> AllowOverride none<br> Require all denied<br>
- 把它注释掉或替换为更宽松的默认策略(仅限本地开发):
# <directory></directory><br># AllowOverride none<br># Require all denied<br>#
或者直接删掉这段(XAMPP 本身在各块里已有细粒度控制) - 真正起效的是每个
内部的块里的Require all granted—— 这才是你该信任并保留的权限点
别把 phpMyAdmin 语言配置混进来
有人误以为改了 phpMyAdmin 的 $cfg['Lang'] = 'zh_CN' 就等于整个 XAMPP 支持多语言切换,这是常见误解:
- phpMyAdmin 的语言配置只影响 phpMyAdmin 界面,和你的项目端口无关
- 它的配置文件是
XAMPP\phpMyAdmin\config.inc.php,不是 Apache 配置 - 如果你在
localhost:8081上跑中文站,页面语言由你自己 PHP/HTML 控制,跟 XAMPP 后台语言完全解耦 - 真正容易被忽略的是:每个端口站点的
index.php或入口文件,才是决定“显示什么语言”的地方;XAMPP 只负责把请求路由过去










