7

对于进入我们网站的 SEO 和旧版外部链接,我们需要为已弃用的 url 提供后备路由。命名插座的事情变得棘手。现在试图找到正确的设置来指定重定向到更新的命名出口的路由。

例如:
https://url.com/prod/000(myOutlet:foo) 应该重定向到 https://url.com/prod/000(newOutlet:some/foo) 而 000 当然是动态的

现在一些反映新旧路线的代码:

OLD:
https://url.com/prod/000(myOutlet:foo)
https://url.com/prod/000(myOutlet:bar)
{
  path: ':vars',
  outlet: 'myOutlet',
  component: VarsComponent
}

NEW:
https://url.com/prod/000(newOutlet:some/error)
https://url.com/prod/000(newOutlet:some/empty)
https://url.com/prod/000(newOutlet:some/foo)
https://url.com/prod/000(newOutlet:some/bar)
{
    path: 'some',
    outlet: 'newOutlet',
    component: VarContainerComponent,
    children: [
      {
        path: 'empty',
        component: VarEmptyComponent
      },
      {
        path: 'error',
        component: VarErrorComponent
      },
      {
        path: ':var', // OLD implementation should point here
        component: VarContentComponent
      }
    ]
  }

如何指定旧实现重定向到新路径:':var' 路由?

// fake assumption, redirectTo code not working
// 1. simpler solution, using just a static route (currently all external links use this one)
{
   path: 'foo',
   outlet: 'myOutlet',
   redirectTo: '**(newOutlet:some/foo)',
},
// 2. more advanced solution, variables being redirected
{
   path: ':var',
   outlet: 'myOutlet',
   redirectTo: '**(newOutlet:some/:var)',
},

当然要提到 myOutlet 在新部署的应用程序中不再存在,我们仍然需要能够对其做出反应。

我创建了一个可以用作游乐场的 stackblitz,它包含一个具有动态 id 和命名路由器出口的路由,如本主题中所述。 https://stackblitz.com/edit/angular-router-outlet-redirectto

4

0 回答 0