javascript - 在 Angular 7 中使用 PathLocationStrategy 后刷新页面时获取 404
问题描述
我们使用 Angular 7 + 节点 8.11.4,以前,我们使用HashLocationStrategy
并且所有路由都有效,而如您所知,'#' 将作为哈希标志自动添加到 URL 中,现在我们要删除 '#',所以我PathLocationStrategy
改用哈希*。更改后,当我刷新页面时,我会得到 404 页面,并且在访问重定向页面时也会发生,这是我的问题。
我搜索并知道更改为后PathLocationStrategy
,所有路由器都需要重定向到index.html(默认主页),而我不确定如何在节点环境中实现它(大多数是apache,nginx,tomcat)
请参阅我的以下代码:
app.module.ts:
providers: [{ provide: LocationStrategy, useClass: PathLocationStrategy }, LookupPsmService, ComponentMapping,
{
provide: HTTP_INTERCEPTORS,
useClass: PsmHttpInterceptor,
multi: true
}, CookieService, AuthGuard],
bootstrap: [AppComponent]
})
export class AppModule {CKEditorModule}
索引.html:
<base href="/">
应用路由模块:
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
我的预期结果是删除 URL 中的 '#' 并可以在浏览器中刷新。
解决方案
尝试删除它以查看它是否有效
{ provide: LocationStrategy, useClass: PathLocationStrategy }
我不认为你会需要那个
使用express更新以处理nodejs中的404,您可以这样做
app.get('*', function(req, res) ...
推荐阅读
- mysql - 获取两个不同领域的空缺总和
- cmake - 未找到 add_custom_command 的 CMake 输出
- c# - 根据文件类型将文本文件写入 ftproot 文件夹时访问被拒绝错误
- html - 表格列宽(按内容)但不超过 50%
- azure-devops - 通过 Azure DevOps Rest API 运行 yaml 管道时如何在响应正文中获取变量
- python - 找出一个数字在两种情况下出现的次数
- c - 如何在不使用 tzset() 的情况下将一个国家时间戳转换为另一个国家时间戳并在 C 中正确处理 DST?
- css - 如何解决此水平滚动条问题?
- firebase - Flutter Firebase 实时数据库一次写入/更新到多个节点
- c# - 创建实体模型多对多 CodeFirst Ef6