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

部署在S3桶的React App仅首页可访问,HashRouter无法解决404问题

React部署AWS S3后非首页404(已用HashRouter仍未解决)的修复方案
  • 修正HashRouter的访问路径逻辑
    HashRouter依赖URL中的#片段实现路由,非首页的正确访问路径应为http://你的S3桶域名/#/manager/login这类格式,而非直接输入http://你的S3桶域名/manager/login。如果是页面内跳转,必须使用React Router的<Link>组件,而非普通<a>标签,示例:

    import { Link } from 'react-router-dom';
    
    // 正确跳转写法
    <Link to="/manager/login">管理员登录</Link>
    

    该组件会自动在URL中添加#前缀,确保路由由React接管,而非S3直接查找对应文件。

  • 配置S3静态网站托管的错误文档
    进入S3桶的静态网站托管设置页,将错误文档设置为index.html。这样无论用户输入的路径是否带#,只要S3找不到对应文件,就会返回首页文件,由React Router解析路由,避免404。

  • 验证package.json的homepage配置
    当前设置的"homepage": "."是合理的,它保证build后的资源文件使用相对路径引用。可重新执行npm run build,检查build文件夹内index.html的资源引用是否为相对路径(如./static/js/main.xxx.js),确保资源加载正常。

  • 清理Route的exact属性(React Router v6)
    React Router v6中<Route>默认是精准匹配,exact属性已被移除,保留它虽不报错但易混淆,建议删除:

    function App() {
      return (
        <div className="App">
          <Routes>
            <Route path="/manager/login" element={<Manager />} />
            <Route path="/receptionist/login" element={<Receptionist />} />
            <Route path="/" element={<Receptionist />} />
          </Routes>
        </div>
      )
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:05:35