Javascript 在Angular 7中使用PathLocationStrategy后刷新页面时获得404
我们使用angular 7+节点8.11.4,之前,我们使用Javascript 在Angular 7中使用PathLocationStrategy后刷新页面时获得404,javascript,node.js,angular,typescript,ecmascript-6,Javascript,Node.js,Angular,Typescript,Ecmascript 6,我们使用angular 7+节点8.11.4,之前,我们使用HashLocationStrategy并且所有路由都工作,而正如您所知,“#”将自动添加到URL中作为散列标志,现在我们想要删除“#”,所以我使用PathLocationStrategy代替散列*。而在更改之后,当我刷新页面时,我会得到404页面,并且在访问重定向页面时也会出现这种情况,这是我的问题 我已经搜索并知道,在更改为PathLocationStrategy后,所有路由器都需要重定向到index.html(默认主页),但我不确
HashLocationStrategy
并且所有路由都工作,而正如您所知,“#”将自动添加到URL中作为散列标志,现在我们想要删除“#”,所以我使用PathLocationStrategy
代替散列*。而在更改之后,当我刷新页面时,我会得到404页面,并且在访问重定向页面时也会出现这种情况,这是我的问题
我已经搜索并知道,在更改为PathLocationStrategy
后,所有路由器都需要重定向到index.html(默认主页),但我不确定如何在节点环境中实现它(大多数是apache、nginx、tomcat)
请参阅下面的代码:
应用程序模块.ts:
providers: [{ provide: LocationStrategy, useClass: PathLocationStrategy }, LookupPsmService, ComponentMapping,
{
provide: HTTP_INTERCEPTORS,
useClass: PsmHttpInterceptor,
multi: true
}, CookieService, AuthGuard],
bootstrap: [AppComponent]
})
export class AppModule {CKEditorModule}
index.html:
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
批准模块:
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
我的预期结果是删除URL中的“#”,并可以在浏览器中刷新。尝试删除此项以查看是否有效
{ provide: LocationStrategy, useClass: PathLocationStrategy }
我想你不需要这个
使用express更新以处理nodejs中的404您可以这样做
app.get('*', function(req, res) ...
您需要在服务器上实现URL重写。如果没有散列,服务器就不知道如何解析您的URL-因此404s@pixelbits问题是如何在节点中重写URL。。。这可能会有帮助:是的,如果没有
LocationStrategy
,它可以在404错误仍然像以前一样存在的情况下工作……嗯,不是,我想要的是修复404错误,你对node有什么想法吗?@KDFinal再次检查我的答案也许你需要使用express在这种情况下我在另一个问题中引用了答案,但它不起作用。参见下面的代码:ts app.get('/*',(req,res)=>{res.render('index',{req,res});})代码>