对于进入我们网站的 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