apache需设listen 0.0.0.0:80以接收外部请求,禁用servername localhost:80;主目录与虚拟主机的中均须配置require all granted;windows/macos防火墙须放行httpd或80端口;android需配置network_security_config.xml允许对应局域网ip明文访问。

Listen 0.0.0.0:80 必须改,不能只改端口或写死局域网IP
Apache 默认监听 127.0.0.1:80,外部设备发来的请求根本进不来,连日志都不会记。改错地方等于白配。
- 打开
httpd.conf,搜Listen 80,改成Listen 0.0.0.0:80(不是192.168.1.100:80,后者绑死单网卡,换WiFi或插网线就失效) -
ServerName行可注释掉,或设为ServerName 0.0.0.0:80;留localhost:80反而可能干扰虚拟主机匹配 - 改完必须重启 Apache,否则配置不加载
Require all granted 要在两处都设,缺一不可
Apache 2.4+ 用 Require 指令替代老版的 Order/Allow,混用会直接导致 Apache 启动失败,错误日志里报 Invalid command 'Order'。
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.conf中找到<directory></directory>(Windows)或<directory></directory>(macOS),把里面的Require local换成Require all granted - 虚拟主机权限:在
httpd-vhosts.conf里每个<virtualhost></virtualhost>内部的<directory></directory>块中,同样把Require local换成Require all granted - 别信“改一处就行”的说法——主配置控制根路径,虚拟主机配置控制具体站点,两者独立生效
防火墙放行 httpd.exe 或 80 端口,不是“关防火墙”
系统防火墙默认拦截所有入站 HTTP 请求,哪怕 Apache 配置全对,请求也到不了进程。
- Windows:进「Windows Defender 防火墙 → 允许应用通过防火墙」,勾选
Apache HTTP Server;若没出现,新建「入站规则」→ 协议 TCP → 端口80(或你改的其他端口如8080)→ 允许连接 - macOS:「系统设置 → 网络 → 防火墙 → 防火墙选项」,点「+」添加
/Applications/XAMPP/xamppfiles/bin/httpd - 别跳过这步——很多用户反复检查配置却始终 403 或连接超时,根源就在这儿
Android 访问要额外处理 cleartext traffic 限制
Android 9(API 28)起默认禁止明文 HTTP 请求,即使浏览器能打开 http://192.168.x.x,App 发起的 Volley/OkHttp 请求也会被拦截,报错 Cleartext HTTP traffic not permitted。
- 不能只在
AndroidManifest.xml加android:usesCleartextTraffic="true"(Android 10+ 已部分忽略该属性) - 必须创建
res/xml/network_security_config.xml,明确列出你的局域网 IP:<domain includesubdomains="true">192.168.56.172</domain>(替换成你本机实际 IP) - 并在
AndroidManifest.xml的<application></application>标签中引用:android:networkSecurityConfig="@xml/network_security_config"
Require 漏改一处、防火墙规则没加、Android 安全配置没覆盖到真实 IP —— 这些细节不逐个验证,问题就永远停在“为什么就是打不开”。










