Angular Html5Mode PlayFramework在刷新时给出404

时间:2017-02-27 20:28:48

标签: playframework angular2-routing playframework-2.5

我正在设置Play Framework 2.5服务器以使用Angular的SPA(单页应用)方法,并希望使用PathLocationStrategy删除HashTags({{ 1}})

我第一次点击服务器时页面加载正常,但如果我在书签后刷新或回来,则会#example

在Angular documentation for Angular Router中,它声明需要服务器端配置

有很多关于如何使用404nginx执行此操作的信息,但是如何在没有代理权的情况下在Play中执行此操作?

这是我的角度路由器配置:

apache

播放const routes: Routes = [ { path: 'main', component: JobsComponent }, { path: 'job-details', component: JobDetailsComponent }, { path: 'job-submit', component: JobSubmitComponent }, { path: '', redirectTo: '/main', pathMatch: 'full' }, { path: '**', redirectTo: '/main', } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], providers: [] }) export class AppRoutingModule { }

routes.conf

1 个答案:

答案 0 :(得分:1)

当角度将网址更改为GET / controllers.Assets.at(path="/public", file="index.html") ,您的服务器不参与时,会发生什么。如果您按刷新,浏览器将请求/main,它将找不到它。

您最好的方法是制作一条能够捕获所需路线并将其发送回索引的路线。这是一个例子

制定捕获请求的路线:

也可以是Play 2.5 documentation

的正则表达式
/main

制作控制器

# Place at the bottom of your routes.conf to be checked last
GET     /*anyUrl     controllers.CatchAllController.catchAll(anyUrl)

所有链接/刷新应按预期工作,无需代理