我正在使用ng serve
在本地开发机器上运行Angular 6项目。例如,我有以下端点:
当我的项目在localhost:4200上运行时,我可以键入以下任意内容,并且它们都是有效的(浏览器将成功加载相应的页面):
但是,当我构建dist文件夹并将内容推送到生产服务器时,我尝试通过相同的URL访问该站点,但它不起作用:
不工作的人返回404 not found错误。在控制台中显示:
无法加载资源:服务器的响应状态为404(未找到)
在本地开发服务器和生产服务器上,行为如何不同?我如何允许用户直接路由到特定端点,例如http://xxx.xxx.xx.xx/cart?
这也可以解决我的其他问题。我添加了以下功能:如果用户实际输入了错误的url,他们将收到404错误(如预期)。我在我的app-routing.module.ts文件中配置了404错误将重定向到自定义组件。但是,这不再起作用。
这是我按项目构建的方式:
ng build --configuration=staging # --configuration=staging specifies that the build should use the staging environment listed in environments folder
文件存储在服务器上的/ var / www / html文件夹中,并且正在运行apache2。
答案 0 :(得分:0)
如文档中所述,角度服务器必须将所有请求以其配置形式重定向到index.html每个服务器。
https://angular.io/guide/deployment#routed-apps-must-fallback-to-indexhtml
答案 1 :(得分:-1)
所有内容都必须通过index.html路由才能工作,请使用以下链接中的配置使其工作https://github.com/mgechev/angular-seed/wiki/Deploying-prod-build-to-Apache-2