You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React/Vite部署GitHub Pages后createBrowserRouter刷新非首页404求助

修复React/Vite部署GitHub Pages后非首页刷新404问题

问题原因

GitHub Pages是静态文件服务器,刷新非首页路径时,浏览器会直接请求对应路径的文件,但单页应用只有一个index.html,服务器找不到对应文件就返回404。需要通过路由配置和服务器重定向解决。

具体修复步骤

1. 修正React Router路由配置

在App.jsx中给createBrowserRouter添加basename参数,统一路由路径格式:

修改前:

const router = createBrowserRouter([
  {
    path: 'youFitness2005/',
    element: <Home />,
    errorElement: <Error />
  },
  // 其他路由...
]);

修改后:

const router = createBrowserRouter([
  {
    path: '/', // 首页改为根路径
    element: <Home />,
    errorElement: <Error />
  },
  {
    path: '/womens',
    element: <ShopCats category= "womens" />
  },
  {
    path: '/mens',
    element: <ShopCats category= "mens" />
  },
  {
    path: '/kids',
    element: <ShopCats category= "kids" />
  },
  {
    path: '/shopAll',
    element: <ShopAll />
  },
  {
    path: '/product/:productId',
    element: <Filter />
  },
  {
    path: '/cart',
    element: <Cart />
  }
], {
  basename: '/youFitness2005/' // 绑定GitHub Pages仓库名作为基础路径
});

2. 更新Navbar中的链接路径

将Navbar.jsx中带仓库名的绝对路径改为相对根路径:

修改前:

<Link to="/youFitness2005"><img className="nav-icons logo-image" src={logo}/></Link>
<Link to="/youFitness2005" className='a'><li className="nav-icons">Home</li></Link>

修改后:

<Link to="/"><img className="nav-icons logo-image" src={logo}/></Link>
<Link to="/" className='a'><li className="nav-icons">Home</li></Link>

其他链接(如/womens、/mens等)保持不变,basename会自动拼接在路径前。

3. 添加服务器重定向配置

在项目public目录下创建_redirects文件,内容如下:

/* /index.html 200

该文件会让GitHub Pages将所有路径请求重定向到index.html,确保React Router能接管路由处理。

4. 重新部署项目

执行部署命令:

npm run deploy

完成以上步骤后,非首页路径刷新即可正常加载。

内容的提问来源于stack exchange,提问作者Sarah Bader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:25:55