在 AWS Amplify 上重新加载 React 应用程序时出现“拒绝访问”错误

IT技术 reactjs amazon-web-services
2021-05-15 04:32:33

我正在开发一个在 AWS Amplify 上运行的 React 应用程序。我的 React 应用程序使用 react-router-dom 库来路由到不同的组件。在 CLI 中运行 amplify publish 后,在应用程序的根目录 (obktraining.com) 浏览器中一切正常,我也可以路由到应用程序中的其他组件也很好。但是,当我在路线上刷新浏览器 (obktraining.com/menu) 时,我收到一条拒绝访问的错误消息。

我在 Amplify 中找到了有关重写和重定向类似问题的其他帖子,但给出的解决方案对我不起作用。

这是错误的图像: 在此处输入图片说明

我的 Amplify 应用程序重写和重定向: 在此处输入图片说明

同样,错误仅在我刷新路线(obktraining.com/menu 或 obktraining.com/drinks)而不是 obktraining.com 时显示。问题是由 react-router-dom 库引起的还是 Amplify 设置的问题?我不知道从这里去哪里。

4个回答

几天以来我一直面临同样的错误。错误是由放大设置引起的。解决方案很简单,通过添加新规则来编辑您的重写和重定向。

源地址 = </^[^.]+$|.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+ $)/>

目标地址 = /index.html

状态 = 200(重写)

国家代码可以留空

保存并再次尝试刷新您的应用。它应该可以工作。

使用此作为参考:https : //docs.aws.amazon.com/amplify/latest/userguide/redirects.html#redirects-for-single-page-web-apps-spa

这是您可以在 Amplify 菜单上找到重定向的地方

然后你就可以放进去(如上面 Dhruv Godambe 发布的那样)

</^((?!.(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$).)*$/>

作为源地址和

/index.html 作为你的目标地址

这是它在 AWS 中的样子

您可以从 AWS Amplify 控制台导航到您的应用程序中的“重写和重定向”,然后单击编辑并选择打开文本编辑器,然后将这段代码添加到您的数组中(如果存在),否则将数组大括号放在它周围。

{
        "source": "</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$)([^.]+$)/>",
        "target": "/index.html",
        "status": "200",
        "condition": null
}

参考:https : //docs.aws.amazon.com/amplify/latest/userguide/redirects.html#redirects-for-single-page-web-apps-spa

正确的规则应该是这样的:

Source address: </^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf)$)([^.]+$)/>
Target address: /index.html
Status: 200