错误:在此服务器上找不到请求的URL(刷新页面后,在构建后页面未加载)

时间:2017-08-05 07:24:29

标签: php angular

在开发人员部分(localhost:4200)工作正常。完成构建应用程序加载和工作正常但url当我键入并按Enter键它不起作用。

我的路由器:

export const appRoutes : Routes = [
    { path: '', redirectTo: 'material', pathMatch: 'full' },
    {path:'material',component: MaterialComponent},
];

和我的module.ts文件

imports: [            
    RouterModule.forRoot(appRoutes,{ enableTracing: true }),BrowserModule,FormsModule,HttpModule,MaterialModule,BrowserAnimationsModule,RouterModule    
  ],

错误:

enter image description here

为什么在构建后提供自定义网址无效?

2 个答案:

答案 0 :(得分:0)

问题是Angular在dns(localhost:4200)部分之后处理了url。因此,当您输入localhost:4200/someurl时,网络会向您的后端查询该完整网址,如果它不存在,您将获得404.您有2个选项:

1)使用我不推荐的HashLocation策略,因为它打破了AoT。

2)在后端代码中定义重定向功能。对于nodejs,我们这样做:

app.get('/*',  function(req, res, next) {
    res.sendFile('index.html', { root: __dirname + '/dist' });
});

相关主题:Angular 2.0 router not working on reloading the browser

答案 1 :(得分:0)

  

我已经使用Hash解决了问题。我们需要在module.ts中导入以下模块

import { HashLocationStrategy, LocationStrategy } from '@angular/common';
  

我们需要在module.ts文件中包含以下提供的提供程序。

  providers: [AppCommonService,{provide: LocationStrategy, useClass: HashLocationStrategy}],