0

我正在使用 Angular 9.0,并且在ng serve -o模式下一切正常,但是当我尝试使用构建项目时,ng build我只能查看根页面。当我尝试转到任何其他页面时,它会返回 404 错误,这是我在本地ng serve模式下没有遇到的。有关如何解决此问题的任何线索?

所以http://www.example.com/ << 此页面打开正常但 http://www.example.com/dashboard返回 404

编辑:为了测试不同的场景,看看可能导致问题的原因,我设法确定了问题。如果我使用 routerLink,导航工作正常,但如果我使用 href 或 window.location.href,它就不起作用。知道为什么在使用 href 或 window.location.href 时会崩溃吗?

4

1 回答 1

2

ng serve自动处理 URL 重定向到index.html.

您的以下添加app.module.ts应该可以解决您的问题。

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

...

providers: [ { provide: LocationStrategy, useClass: PathLocationStrategy } ]

https://angular.io/api/common/PathLocationStrategy

编辑:

href 是浏览器提供的用于在页面之间导航(切换)的默认属性,其中整个页面将被重新加载而失去当前状态。

关于 href 与 routerLink 的更详细说明。

因此,如果您将文件托管在 Apache 服务器上,它会尝试index.html/dashboard目录中查找不存在的文件,因此会出现 404 错误。要解决这个问题,您必须将所有流量重写回index.html. 关于重写的更详细的解释。

于 2020-04-05T15:31:40.527 回答