简而言之,我们希望将旧链接重定向到新路由 . 我知道如何使用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 回答
将
<base href="/">
添加到HTML<head>
标记可修复有关角度尝试从错误路径加载脚本的问题 .为了正确地重定向路由,我们必须从
app.module.ts
中的路由中删除哈希值,将RouterModule行更改为