404在数字海洋应用程序平台上刷新Angular SPA时的页面

404在数字海洋应用程序平台上刷新Angular SPA时的页面,angular,single-page-application,digital-ocean,static-site,Angular,Single Page Application,Digital Ocean,Static Site,我已经在新的数字海洋应用程序平台上测试了一个有角度的单页应用程序,作为一个静态站点 当我访问根URL并通过单击链接导航到不同的页面时,Angular应用程序加载良好。但是,当我刷新任何页面上的浏览器时,我会得到一个404错误 数字海洋应用程序平台是否需要nginx.conf文件?我是否缺少在环境中启用pushstate的步骤 编辑: 您现在可以正式使用catchall\u document属性,而不是本说明中的error\u document 我认为现在不可能在应用程序平台上进行官方水疗。更

我已经在新的数字海洋应用程序平台上测试了一个有角度的单页应用程序,作为一个静态站点

当我访问根URL并通过单击链接导航到不同的页面时,Angular应用程序加载良好。但是,当我刷新任何页面上的浏览器时,我会得到一个404错误

数字海洋应用程序平台是否需要nginx.conf文件?我是否缺少在环境中启用pushstate的步骤

编辑:

您现在可以正式使用
catchall\u document
属性,而不是本说明中的
error\u document


我认为现在不可能在应用程序平台上进行官方水疗。更多信息请点击这里

但目前还有一个解决办法

创建
app.yaml
文件

名称:应用程序名称
地区:fra
静态站点:
-生成命令:|-
初始化
git clean-d-f。
git远程添加源https://github.com/REPOSITORY
git获取来源$BRANCH\u名称
git签出$COMMIT\u SHA
npm安装
npm安装-g@angular/cli
ng构建——prod
环境_slug:node js
github:
分支机构:硕士
在推送上部署:true
repo:存储库
名称:应用程序名称
错误\u文档:index.html
路线:

-路径:///code>另一种解决方法是在角度路由之前使用“#”,如:“myapp.com/#/someroute”()

在app-routing.module.ts中,在RouterModule.forRoot上将参数“useHash”设置为true:

@NgModule({
  imports: [
    RouterModule.forRoot(routes, {
      useHash: true,
    }),
  ],
  exports: [RouterModule],
})
我在这里遇到了同样的问题,效果很好。 在DigitalOcean解决此问题之前,我将使用此方法。

更新(2020年11月24日)控制面板现在支持“自定义页面”部分下组件设置中的Catchall文档选项


per

您是在任何页面刷新中获得404还是仅在根页面刷新中获得404?我在任何页面刷新中获得404。您是在nginx后面部署应用程序吗?如果是这样,您需要配置nginx,使其在发生404错误时正常工作。我刚刚与DigitalOcean上的人员交谈,他们最近为静态站点添加了一个新选项:catchall_document。因此,我们可以将“error\u document:index.html”更改为“catchall\u document:index.html”。我在这里测试过,效果非常好!=]