角度-建立后内部路由不工作-404错误



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

所以http://www.example.com/<lt;这个页面打开很好,但是http://www.example.com/dashboard返回404

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

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

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

import { PathLocationStrategy, LocationStrategy } from '@angular/common';
...
providers: [ { provide: LocationStrategy, useClass: PathLocationStrategy } ]

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

编辑:

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

关于href与routerLink的更详细解释。

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

最新更新