Angular 具有 aws amplify 控制台的应用程序 - 路由

Angular applications with aws amplify console - routing

我无法理解 Angular 和 AWS Amplify 控制台的重写和重定向规则。

在我的 angular 应用程序中,我有与此相似的路线:

const routes: Routes = [
  { path: '', redirectTo: '/login', pathMatch: 'full' },
  { path: 'frontpage', redirectTo: '/somepath/frontpage', pathMatch: 'full'},
  { path: 'login', component: LoginComponent },
  { path: 'somepath', component: SecureComponent, children: [
    { path: '', redirectTo: '/frontpage', pathMatch: 'full' },
    { path: 'frontpage', component: ForsideComponent }
  ]}
];

使用本地服务器 (ng serve / localhost) 一切正常。

但是当我的应用程序通过 Amplify 控制台部署时,唯一有效的路径是 somedomain.amplifyapp.com/,然后重定向到 somedomain.amplifyapp.com/login(应该如此)。但是直接输入 somedomain.amplifyapp.com/loginsomedomain.amplifyapp.com/somepath/frontpage 或跟随链接会给我一个 xml 访问被拒绝的页面。

以上行为与此重写和重定向规则有关:

[
    {
        "source": "**",
        "target": "/index.html",
        "status": "200",
        "condition": null
    }
]

有人知道如何设置重写和重定向规则以使用 Angular 路由器吗?

在文档中找到了答案。如果有人想知道,请留下答案。

如 aws 文档中所述: https://docs.aws.amazon.com/amplify/latest/userguide/redirects.html "Redirects for Single Page Web Apps (SPA)"

我们可以添加以下规则(使用正则表达式):

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