从.NET迁移到angular2:如何重定向旧(绝对)链接?

时间:2017-07-06 20:05:37

标签: angular angular2-routing

简单地说,我们希望将旧链接重定向到新路由。我知道如何使用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?

中实现这些重定向

1 个答案:

答案 0 :(得分:0)

在HTML <base href="/">标记中添加<head>可修复有关尝试从错误路径加载脚本的角度问题。

要正确重定向路由,我们必须从app.module.ts中的路由中删除哈希值,将RouterModule行更改为

(RouterModule.forRoot(ROUTES, { useHash: false })