为了账号安全,请及时绑定邮箱和手机立即绑定

在react中重新加载页面时如何避免404错误?

在react中重新加载页面时如何避免404错误?

临摹微笑 2021-03-30 17:23:07
我有一个使用Primer-react模板开发的React应用程序。它具有一个管理仪表板,并且在仪表板侧面板中具有多个路由。我在index.js中设置了一个Auth路由,当我转到每个路由时,它都可以正常运行。但是当重新加载页面时,页面显示找不到404页面!我保护AuthRoute中的“ /”路径,以便保护所有以“ /”开头的路径(我在仪表板内部有诸如“ / usertable”,“ / users”,“ / payments”等路径)。我不确定这里是否发生错误,因为有些路由(仪表板外部)应该在没有Auth的情况下进行访问,例如“ / Signin”。我假设,如果我可以保护仪表板内每个路由的精确路径(例如精确路径=“ / usertable”)而不是保护所有“ /”路径,那么404问题将得到解决!但是当我这样做时,注销后,我可以通过浏览器“后退”按钮返回到仪表板,这会产生另一个问题。我该如何解决?index.jsimport React from 'react';import { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';import { render } from 'react-dom';import Auth from './auth';import AppProvider from './components/AppProvider/AppProvider';import Dashboard from './containers/Dashboard';import { ForgotPassword, Signin, ResetPassword } from './pages';import registerServiceWorker from './registerServiceWorker';const AuthRoute = ({ component: Component, ...rest }) => (  <Route {...rest} render={props => {    if (Auth.isAuthenticated()) {      return <Component {...props} />    }    else {      return <Redirect to={{ pathname: '/signin' }} />    }  }} />)export default render(  <AppProvider>    <BrowserRouter>      <Switch>        <Route exact path="/forgot" component={ForgotPassword} />        <Route exact path="/signin" component={Signin} />        <Route exact path="/reset/:token?" component={ResetPassword} />        <AuthRoute path="/" component={Dashboard} />        <Route path="/" component={Dashboard} />      </Switch>    </BrowserRouter>  </AppProvider>  , document.getElementById('root'));registerServiceWorker();
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

当您重新加载页面时,会收到404,因为您在实际收到html文档响应之前首次命中了服务器,并且服务器可能仅配置为发送您index.html的请求GET '/'

您需要设置服务器以捕获所有传入的URL(/*)并呈现您的index.html


查看完整回答
反对 回复 2021-04-08
?
慕后森

TA贡献1802条经验 获得超5个赞

如果要使用netlify进行部署,请_redirects在公用文件夹中创建一个文件,并在其中添加以下行。

/*  /index.html  200


查看完整回答
反对 回复 2021-04-08
  • 2 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号