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

React Vite应用部署GitHub Pages后路由404及跳转异常问题

React Vite部署GitHub Pages路由问题解决方案

你遇到的核心问题是导航栏使用原生<a>标签而非React Router的Link组件,导致客户端路由未生效,同时部分配置细节有误。以下是具体修复步骤:

1. 替换原生<a>为React Router的Link组件

原生<a>标签会触发页面硬刷新,无法识别HashRouter的basename配置,必须改用react-router-dom提供的Link组件实现客户端路由跳转:

// 先导入Link组件
import { Link } from 'react-router-dom';

return(
    <header id='main-header'>
        <Link to='/'> {/* 替换a标签为Link,href改为to */}
            <h3 id="business">Business</h3>
        </Link>
        <nav ref={navRef}>
            <Link to="/" className='link'>Home</Link>
            <Link to="/menu">Menu</Link>
            <Link to="/gallery">Gallery</Link>
            <Link to="/feedback">Feedback</Link>
            <button className='nav-btn nav-close-btn' onClick={toggleNavBar}>
                <FaTimes/>
            </button>
        </nav>
        <button className='nav-btn' onClick={toggleNavBar}>
            <FaBars/>
        </button>
    </header>
);

2. 修正package.json的homepage配置

当前homepage指向仓库地址,需改为GitHub Pages的实际访问地址:

{
  "name": "business",
  "homepage": "https://username.github.io/business/", // 修正为页面访问地址
  // ... 其他配置保持不变
}

3. 确认现有正确配置

你的以下配置已经符合要求,无需修改:

  • index.js中HashRouter的basename='/business'
  • vite.config.js中base: '/business/'
  • App.js中的路由规则

为什么之前的尝试无效?

  • 手动给<a>加/business前缀:硬刷新后GitHub Pages找不到对应静态文件,因为HashRouter的路由基于哈希结构(如/business/#/menu),原生a标签无法自动处理该逻辑。
  • 直接修改Route路径:会破坏本地开发的路由逻辑,且未解决核心的跳转方式问题。

内容的提问来源于stack exchange,提问作者Secret Waffle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:45