当前位置 : 主页 > 网页制作 > React >

reactjs – 由于React SPA中的Hasbangs,无法访问Refresh页面

来源:互联网 收集:自由互联 发布时间:2021-06-15
我正在使用从 https://github.com/facebookincubator/create-react-app创建的ReactJS SPA 我正在使用S3和Cloudfront来为我的网站服务.一切正常,直到我重新加载页面 – 它会抛出一个错误(在我的情况下拒绝
我正在使用从 https://github.com/facebookincubator/create-react-app创建的ReactJS SPA

我正在使用S3和Cloudfront来为我的网站服务.一切正常,直到我重新加载页面 – 它会抛出一个错误(在我的情况下拒绝访问),因为没有Hashbang它无法处理.

注意:如果我输入带有hashbang的URL,它可以正常工作

基本上,这是有效的:https://example.com/#/dashboard(重定向到https://example.com/dashboard)

但是,如果我刷新页面,它会出现如下错误:

我们使用browserHistory来维护路由.我只显示相关代码:

<Router history={browserHistory}>
<Route path='/dashboard' component={Dashboardpage} />
</Router>
当你请求 https://example.com/dashboard时,第一个请求即 https://example.com发送到服务器,它应该返回包含你的react-router的index.html,它足够聪明地理解路径,即没有hashbangs并加载所需的组件.所以有些重定向必须在服务器端设置路由.

在你遇到https://example.com/dashboard的情况下,S3和cloudfront应该处理错误代码(即404或任何)并将页面重定向到index.html,之后react-router将处理要加载的组件.

希望我的回答很清楚;)

你也可以参考这里给出的答案React-router urls don’t work when refreshing or writting manually

网友评论