Angular 7:本地路由有效,部署后在路由上更新=>时找不到

时间:2019-02-19 00:48:03

标签: angular deployment angular7 angular-router

本地主机上的路由有效,我不仅可以从索引访问路由,而且可以访问 www.myhost.com/route1可在localhost上运行 www.myhost.com => www.myhost.com/route1在我的家庭服务器上工作(我有公共IP) www.myhost.com/route1不起作用=>没有找到我

我用ng build --prod --watch进行构建 我尝试PathLocationStrategy 我尝试APP_BASE_HREF 我尝试LocationStrategy

基本设置为“ /”

我尝试用useHash,它可以工作,但是真的很丑。

const appRoutes: Routes = [
  {path: '', pathMatch: 'full', component: MatchListComponent},
  {path: 'match/:id', component: MatchDetailComponent},
  {path: 'team/:id', component: TeamDetailComponent}
];

@NgModule({
  declarations: [
    AppComponent,
    MatchListComponent,
    MatchDetailComponent,
    TeamDetailComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    NgbModule,
    RouterModule.forRoot(appRoutes, {scrollPositionRestoration : 'enabled'})
  ],
  providers: [{provide: PathLocationStrategy}],
  bootstrap: [AppComponent]
})
export class AppModule { }

我尝试了角度2或4的一些解决方案,但它们不起作用。 我的Web服务器是Apache2

2 个答案:

答案 0 :(得分:0)

我们可以通过使用哈希策略来克服这个问题

希望有帮助。

 RouterModule.forRoot(routes, {
          useHash: true
        })
      ],

答案 1 :(得分:0)

如果您正在使用Spring(或其他端点技术),则可以使用的另一个选项是定义一个控制器,该控制器将您的角度应用程序中的所有路由重定向到index.html文件。示例:

@Controller
@RequestMapping({
  "/login",
  "/clients",
  "/admin/users",
  "/admin/programs",
  "/reports",
  "/404"
})
class AppController {
  @GetMapping
  String admin() {
    return "../static/index";
  }
}