React项目在XAMPP中访问子路径如/react/about出现404,根本原因是Apache未将前端路由请求回退至index.html,需启用mod_rewrite、配置.htaccess重写规则,并在BrowserRouter或createBrowserRouter中设置basename="/react",同时package.json中homepage必须为"/react"。

React 项目在 XAMPP 中直接访问子路径(如 /react/about)会 404,不是 React 写错了,是 Apache 没把请求 fallback 到 index.html —— 它默认当真实文件路径处理,而 React 路由全靠客户端 JS 驱动。
Apache 必须重写所有前端路由到 index.html
XAMPP 自带的 Apache 不会自动 fallback,必须手动配置重写规则。关键不是改 React,而是让 Apache 把所有匹配 /react/* 但非静态资源的请求,都指向 build/index.html。
- 确保 React 构建时设了
"homepage": "/react"(不是./react或完整 URL),否则<script></script>和的路径会错 - 进入 XAMPP 安装目录下的
htdocs/react(即你放build文件夹的位置),新建或编辑.htaccess文件 - 内容必须为:
RewriteEngine On
RewriteBase /react/
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /react/index.html [L]
注意:RewriteBase 值必须和 homepage 一致;RewriteRule 中的路径也要带前缀 /react/,否则刷新 /react/about 会返回根目录下的 index.html,导致 JS/CSS 404。
BrowserRouter 必须加 basename
不加 basename,React Router 会认为它跑在根路径下,push("/about") 实际发出的是 /about 请求,Apache 仍会尝试找 htdocs/about,而不是 htdocs/react/about。
HISUI 前端框架基础开发指南。HISUI 是基于 easyui 二次开发的 jQuery UI 组件库,专为医疗信息系统设计。当涉及 HISUI 组件开发、jQuery easyui 表格/表单/布局/窗口、医疗系统前端页面编写时使用此 skill。 涵盖 40 个组件的官方文档参考,支持声明式与编程式两种初始化方式,提供 $cm/$m 数据访问方法。
- 入口文件(如
src/index.js)中初始化Router时,必须显式传入basename="/react" - 示例写法:
- 如果用的是
createBrowserRouter(v6.4+),则需在createBrowserRouter(routes, { basename: "/react" })中设置 - 漏掉这步,开发时(
npm start)一切正常,一构建部署就路由失效
检查 build 后的 HTML 资源路径是否正确
构建完打开 build/index.html,肉眼确认所有 <script></script> 和 标签的 src/href 是否都带 /react/static/ 前缀。如果还是 /static/,说明 homepage 没生效或被覆盖。
- 常见错误:在
package.json里写了"homepage": "./react"——.会导致相对路径解析失败,Apache 无法识别 - 另一个坑:用 VS Code 打开
build/index.html时,浏览器地址栏显示的是file://协议,此时路由行为和 HTTP 服务完全不同,不能用来验证 - 务必通过
http://localhost/react/访问,而不是双击打开 HTML 文件
最易忽略的一点:XAMPP 的 Apache 默认关闭 mod_rewrite,即使写了 .htaccess 也完全不执行。必须打开 XAMPP\apache\conf\httpd.conf,取消 LoadModule rewrite_module modules/mod_rewrite.so 前的注释,并把对应 块里的 AllowOverride None 改成 AllowOverride All,否则上面所有配置都是摆设。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










