reactjs - 在导致 404 的路由内部刷新
问题描述
我正在通过github页面托管一个网站,我可以成功进入该网站。在登陆页面上,我可以毫无问题地刷新,当我转到http://example.com/about并刷新时出现问题,这将引发 404 错误。这是我的路线:
<div className="App">
<GlobalProvider>
<Router basename={'/'}>
<Route path={process.env.PUBLIC_URL + '/'} render={props => <Main {...props} />} />
</Router>
</GlobalProvider>
</div>
在我内部还有两条额外的路线,一条通往 /about,另一条通往两条不同的子路线。
<div className="main">
<Route path={process.env.PUBLIC_URL + '/about'} render={props => <About {...props} aboutData={about} />} />
<Route path={process.env.PUBLIC_URL + '/cases/:id'} render={props => <CaseOverlay {...props} />} />
</div>
当我在其中任何一个中刷新时,我得到 404。有类似问题的人被告知将 process.env.PUBLIC_URL 变量与路径一起使用。
在我的 package.json 中,我将主页字段设置为我的 url,如果我没记错的话,应该更改 public_url。
"homepage": "http://example.com",
当我记录 public_url 变量时,它似乎总是一个空字符串。我不知道是什么导致了这个问题,因为这个解决方案似乎解决了其他人的确切问题。
先感谢您!
编辑:忘记添加单击这些路线的链接按预期工作,但如果我只是直接输入http://example.com/about或在已经在这些路线上刷新时不会。
解决方案
GitHub Pages 不支持 React Router。
这里有几个解决方案:
- 您可以从使用 HTML5 历史 API 切换到使用哈希路由...
- 或者,您可以使用技巧来教 GitHub Pages 处理 404 ...
推荐阅读
- preg-match-all - PHP 匹配一个特定的字符串
- php - 谷歌分析 api 获取电子商务交易并在 php 中添加到购物车详细信息
- javascript - 组件隐藏和显示
- oauth - Microsoft Graph API 的权限
- javascript - UWP 应用程序 - JavaScript 运行时错误:无法设置未定义或空引用的属性“onclick”
- ruby-on-rails - 使用我的排行榜。可以最大限度地减少工作量
- apache-spark - 在 apache spark sql 中写入 SELECT TOP 1 1
- c# - CURL --data-binary 到 C# HttpWebrequest
- php - 致命错误:未捕获的错误:在注册表类中调用 null 上的成员函数 get()
- php - jQuery 数据表按钮未显示在 UI 中