简单地说,我们希望将旧链接重定向到新路由。我知道如何使用app-routes.ts执行此操作,但是, 完全工作。例如:
export const ROUTES: Routes = [
{
path: 'my-loads',
component: MyLoadsComponent,
canActivate: [AuthGuard]
},
{
path: 'Applications/LoadBoard/CarrierBoard.aspx',
redirectTo: 'my-loads'
}
]
此重定向实际上有效,但仅当用户尝试访问/#/Applications/MyApp/Controller.aspx
(使用哈希)时才会运行,但如果用户尝试访问/Applications/MyApp/Controller.aspx
(不使用哈希,即URL用户)则无效会有书签)。
这是因为webpack / angular2显然使用相对 URL来加载使用该站点所需的所有脚本。它正在尝试加载script.bundle.js
而不是/script.bundle.js
,因此最终会尝试加载/Applications/MyApp/script.bundle.js
。在这种情况下,如果您尝试访问除root之外的绝对URL,则所获得的所有脚本都是404,因此没有脚本运行,并且您将看到“正在加载...”而没有其他内容。
我认为这种编译的想法是允许用户构建不存在于根文件夹中的webapp。这是一个好主意,但它阻止我们重定向旧URL。是否有(正确的)方法在angular2?
中实现这些重定向答案 0 :(得分:0)
在HTML <base href="/">
标记中添加<head>
可修复有关尝试从错误路径加载脚本的角度问题。
要正确重定向路由,我们必须从app.module.ts
中的路由中删除哈希值,将RouterModule行更改为
(RouterModule.forRoot(ROUTES, { useHash: false })