在 AWS Amplify 中重写和重定向

IT技术 node.js reactjs amazon-web-services react-router aws-amplify
2021-04-28 08:03:05

我是新手AWS deployment,正在尝试将后端 ( NodeJS, Express, MongoDB) 和前端 ( React/Redux) 代码部署到 AWS。AWS Beanstalk用于后端和AWS amplify前端代码。我已经完成了后端部署并使用邮递员对其进行了测试,甚至通过在http://localhost:3000/. 我也将代码部署在 AWS amplify 上,但似乎我不知道Rewrites and redirects它的用途,以便应用程序可以导航到不同的 URL。我的是一个SPA我可以看到登录屏幕,但是一旦我输入凭据,它就不会导航到 protected(Using JWT Auth) URL。

我在 amplify 上的应用托管在: https://url-resolve-changes.d1z993fyobkz3s.amplifyapp.com/

App.js -> 包含不同的路由。除了/login/register所有路线都使用PrivateRoute最先被检查,然后可以渲染网页。我声明了 BASE_URL = host 但我不确定如何使用它来导航不同的 URL

// const BASE_URL = "https://url-resolve-changes.d1z993fyobkz3s.amplifyapp.com";

class App extends Component {
  render() {
    return (
      <div className="App">
        <MessageSnackbar />
        <Router history={history}>
          <Switch>
            <PrivateRoute
              exact
              path={`/`}
              renderFunc={routeProps => <HomePage {...routeProps} />}
            />
            <Route path={`/login`} component={Login} />
            <Route path={`/register`} component={Register} />
          </Switch>
        </Router>
      </div>
    );
  }
}

export default withTheme()(App);

我在 Amplify 设置中的重写和重定向中进行了以下配置。

在此处输入图片说明

清单文件.json

{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}

问题是,当我点击时,目前没有任何负载:

https://url-resolve-changes.d1z993fyobkz3s.amplifyapp.com/index.html

或者

https://url-resolve-changes.d1z993fyobkz3s.amplifyapp.com/

后端 URL 配置正确,因为当我从http://localhost:3000/API发送请求时工作正常。这只是我缺少的重定向部分。如果需要任何其他详细信息,请告诉我。感谢你的帮助。提前致谢。

2个回答

我在使用路由路径刷新页面时遇到问题,收到响应 AccessDenied,由 S3 引起的实际上没有该路径或文件。首先在搜索结果上遇到这个问题,所以在这里发布我的解决方案。

通过以下方式解决了问题

原地址:

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

在 Amplify 设置中的重写和重定向中配置:

单页 Web 应用程序 (SPA) 的重定向

大多数 SPA 框架都支持 HTML5 history.pushState() 在不触发服务器请求的情况下更改浏览器位置。这适用于从根目录(或 /index.html)开始旅程的用户,但不适用于直接导航到任何其他页面的用户。使用正则表达式,以下示例为 index.html 的所有文件设置了 200 次重写,但正则表达式中指定的特定文件扩展名除外。

虽然我在https://twitter.com/nswebstudio/status/1149276084304613376上转发了您的问题,但 我发现它是 amplify.yml 问题。我更正了我的构建路径如下

baseDirectory: build

完整的 amplify.yml 文件截图 在此处输入图片说明

另请阅读以供参考:https : //docs.aws.amazon.com/amplify/latest/userguide/build-settings.html

希望能帮助到你