部署角度应用程序时如何避免路由更改?

Posted

技术标签:

【中文标题】部署角度应用程序时如何避免路由更改?【英文标题】:How to avoid routing changes when deploying angular app? 【发布时间】:2020-07-24 14:06:34 【问题描述】:

在本地运行我的 Angular 应用程序时,我可以访问例如 localhost:4200/login。当我部署我的 Angular 应用程序时,当我转到 website.com/login 时,我得到“在此服务器上找不到请求的 URL /login”。我的应用已部署到 Google Cloud 应用引擎。

当我将“useHash: true”添加到我的 RouterModule 时。它工作正常,所以 website.com/#/login 工作,但这似乎违反直觉,因为当有人自己填写 url 时,我会假设他们会填写 website.com/login,这会将他们再次重定向到未找到在这台服务器上。

我怎样才能避免使用这个“useHash:true”并使我的路由与本地路由相同?

【问题讨论】:

您是否尝试过本文中提到的解决方案***.com/questions/43535048/… 尝试了那里提到的所有解决方案。每次重新上传时也删除了缓存,没有任何效果。唯一有效的是当我在其中留下“useHash:true”时。 【参考方案1】:

我假设您的 app.yaml 看起来像这样:

handlers:
  - url: /
    upload: /index.html
    static_files: /index.html
    secure: always

现在,当您尝试打开 URL /login/ 时,app.yaml 中没有它的路由,这就是它返回 404 的原因。所以useHash 指令是您在这里唯一的解决方案。

【讨论】:

以上是关于部署角度应用程序时如何避免路由更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何在基本href之后启动角度路由器而不更改资产地址

部署到 Springboot 应用程序后,角度路由不起作用

如何在使用混合路由时以角度使用 ActivatedRoute?

查询参数更改时,角度路由器导航不会加载页面

有没有办法在角度上实现两步路由?

部署到 tomcat 9(Ubuntu 18.04)时,角度路由不起作用