Angular - 构建内部路由后不工作 - 404 错误

Angular - After Build Inner Routing Not Working - 404 Error

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

所以http://www.example.com/<<这个页面打开正常但是 http://www.example.com/dashboard returns 404

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

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 is the default attribute provided by browsers for navigating (switching) between pages, where the entire page will be get re-loaded losing the current state.

A more detailed explanation on href vs routerLink.

因此,如果您将文件托管在 Apache 服务器上,它会尝试在 /dashboard 目录中查找不存在的 index.html 文件,因此会出现 404 错误。 要解决此问题,您必须将所有流量重写回 index.htmlA more detailed explanation on rewrites.