XAMPP刚配置好时,用浏览器打开 http://localhost 或者 http://127.0.0.1 能看到项目页面,很容易给人造成一种服务已经就绪的错觉。可一旦把地址换成局域网 IP,例如 http://192.168.1.23,手机或其他电脑却打不开,甚至直接返回 403。这个问题通常不是网络不通,而是 Apache 的访问控制和 Windows 防火墙把来源限制在本机回环地址上。

要让局域网设备稳定访问 XAMPP 中的本地网站,需要同时处理两层限制:第一层是 Apache 自身的 Require 指令,它决定了哪些 IP 可以进入对应目录;第二层是系统防火墙的入站规则,它决定了外部请求能不能到达 Apache 监听的端口。下面按照访问控制、防火墙、管理面板安全、常见问题四个部分展开。
一、Apache 访问控制:从 Require local 到 Require all granted
Apache 2.4 版本之后,访问控制语法发生了明显变化。旧的 Allow from all 已经被 Require all granted 替代。XAMPP 为了安全,默认在若干路径上使用了 Require local,它的含义是只允许来自 127.0.0.1 和 ::1 的请求,其他 IP 一律拒绝。所以当手机通过局域网 IP 访问时,请求虽然到达了 Apache,但来源地址不属于 local,就被直接挡在门外。
首先要打开 XAMPP 控制面板,点击 Apache 右侧的 Config 按钮,选择 httpd-xampp.conf,对应的文件路径通常是 C:\xampp\apache\conf\extra\httpd-xampp.conf。在这个文件中可以找到类似下面这样的 <LocationMatch> 块:
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>
这段配置限制了 XAMPP 管理面板、phpMyAdmin、安全页面、服务器状态等管理类路径,只允许本机访问。如果希望局域网设备也能打开这些管理页面,可以把 Require local 修改为 Require all granted。修改后的配置如下:
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
Require all granted
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>
除了管理页面,还要检查网站根目录对应的 <Directory> 权限。打开 httpd.conf,找到 DocumentRoot 附近的配置,确认 C:\xampp\htdocs 目录的访问控制不是 Require local。通常默认已经是 Require all granted,但如果之前手动修改过,就需要改回来。典型的目录配置如下:
DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
需要特别说明的是,如果只是为了访问普通网站目录,不建议直接开放整个 <LocationMatch> 中列出的所有管理路径。更稳妥的做法是只开放网站根目录,继续保留 phpMyAdmin 和服务器状态页面的 Require local 限制。修改完成后保存文件,在 XAMPP 控制面板中点击 Apache 的 Stop,再点击 Start 重启服务,让配置生效。
二、Windows 防火墙放行 80 端口
Apache 配置修改之后,有时本机用局域网 IP 能打开,但手机仍然无法访问。这时基本可以判断是 Windows 防火墙阻断了入站请求。Windows 默认会拦截来自外部设备的陌生端口连接,XAMPP 安装时添加的防火墙规则通常只允许专用网络,或者根本没有添加 Apache 的入站规则。
最直接的方法是打开控制面板,进入 Windows Defender 防火墙,选择高级设置,在左侧点击入站规则,然后新建规则。规则类型选择端口,协议选择 TCP,特定本地端口填写 80,操作选择允许连接,配置文件可以全部勾选,最后给规则命名例如 Apache80。保存后无需重启系统,规则会立即生效。
如果更喜欢命令行操作,可以用管理员身份运行 cmd,执行下面这条命令:
netsh advfirewall firewall add rule name="Apache HTTP 80" dir=in action=allow protocol=TCP localport=80
放行端口后,还需要确认本机的局域网 IPv4 地址。在命令行中执行 ipconfig,找到无线局域网适配器 WLAN 或以太网适配器,查看 IPv4 地址,通常是 192.168.1.x 或 192.168.0.x 这样的格式。然后在同一局域网内的手机或另一台电脑上访问 http://192.168.x.x/,如果能打开站点首页,说明 Apache 和防火墙的配置已经生效。如果同一台电脑上用局域网 IP 能打开,其他设备不能打开,还要检查路由器是否开启了 AP 隔离。部分路由器默认会阻止无线设备之间互相访问,需要在路由器后台关闭 AP 隔离或无线隔离功能。
三、phpMyAdmin 与 XAMPP 管理面板的安全边界
XAMPP 的设计定位是本地开发环境,它默认把 phpMyAdmin、Webalizer、服务器状态等工具锁在本机,并不是没有原因。phpMyAdmin 一旦对整个局域网开放,任何连接到同一网络的人都可以尝试登录数据库,如果 MySQL 账号使用了弱密码或者空密码,数据库很容易被拖走。XAMPP 控制面板本身也有不少敏感操作,开放后会增加不必要的攻击面。
因此,如果确实需要在局域网中访问这些管理工具,建议同时做好两件事:第一,修改 MySQL 的 root 密码,并且在 phpMyAdmin 的 config.inc.php 中确认认证方式为 cookie 或 http,而不是自动登录;第二,不要长期保持 Require all granted,用完管理工具后可以恢复为 Require local。如果只是想给同事或手机预览网站页面,可以只开放网站根目录,保留管理入口的本机限制。
更细粒度的做法是拆分 <LocationMatch> 规则。比如只开放 XAMPP 面板,但继续锁定 phpMyAdmin:
<LocationMatch "^/(?i:(?:xampp|security|licenses|webalizer|server-status|server-info))">
Require all granted
</LocationMatch>
<LocationMatch "^/(?i:(?:phpmyadmin))">
Require local
</LocationMatch>
这样既满足了特定管理页面的局域网访问需求,又避免将数据库管理入口直接暴露出去。需要提醒的是,Apache 的配置规则有优先级,多个 <LocationMatch> 同时匹配时,具体生效结果还要结合 <Directory>、<Files> 等区块综合判断。修改这类配置后最好在局域网设备上逐个路径测试,确认开放范围和预期一致。
四、常见问题排查与替代方案
端口冲突是 XAMPP 局域网访问中最常遇到的问题之一。如果 80 端口被 IIS、SQL Server Reporting Services 或者某些下载工具占用,Apache 启动时就会报错,或者虽然启动成功但外部请求被其他程序接管。可以通过 netstat -ano | findstr :80 查看占用 80 端口的进程 PID,再在任务管理器中确认进程名称。如果确实无法释放 80 端口,可以修改 Apache 的监听端口,在 httpd.conf 中把 Listen 80 改为 Listen 8080,同时把 ServerName localhost:80 修改为 ServerName localhost:8080。之后局域网设备访问的地址也要变成 http://192.168.x.x:8080/,并且在防火墙中放行对应端口。
另一个容易被忽略的问题是虚拟主机配置。如果项目使用 httpd-vhosts.conf 配置了虚拟主机,并且 ServerName 只指向了一个自定义域名,那么通过 IP 访问时可能落入默认站点或者出现 404。此时需要检查虚拟主机配置,确保 ServerAlias 或默认站点能够匹配局域网 IP,或者直接新增一个监听所有地址的虚拟主机。
如果只是临时想让外部设备访问本地站点,又不想修改防火墙和 Apache 配置,可以使用内网穿透工具,例如 ngrok、frp 或者 cloudflared。这些工具会在本机启动一个客户端,把本地端口映射到一个公网地址,手机和外部网络通过公网地址访问。但这种方案会把服务暴露到公网,不适合传输敏感数据,也不建议长期开启。对于稳定开发调试来说,修改 XAMPP 自身配置和防火墙规则仍然是更直接、更可控的方式。
实际配置完成后,建议按顺序验证:先确认 Apache 正常运行且没有配置语法错误;再用本机局域网 IP 访问;接着用其他设备访问同一 IP;最后检查路由器 AP 隔离设置。只要这三层都没有问题,XAMPP 站点就能在局域网内稳定访问。
XAMPP配置局域网访问Apache访问控制修改时间:2026-10-05 23:02:09