首页 文章

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

提问于
浏览
-1

简而言之,我们希望将旧链接重定向到新路由 . 我知道如何使用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显然使用 relative URL来加载使用该站点所需的所有脚本 . 它试图加载 script.bundle.js 而不是 /script.bundle.js ,所以它试图加载 /Applications/MyApp/script.bundle.js . 在这种情况下,如果您尝试访问除root之外的绝对URL,则所获得的所有脚本都是404,因此没有脚本运行,并且您将看到"Loading..."而没有其他内容 .

我认为这种编译的想法是允许用户构建不在根文件夹中的webapps . 这是一个好主意,但它阻止我们重定向旧URL . 是否有(正确的)方法在angular2中实现这些重定向?

1 回答

  • 0

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

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

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

相关问题