我使用的是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
。关于重写的更详细的解释。