在本地主机上运行angular项目时,我可以为我的网站键入任何URL,但是在apache服务器上我不能

时间:2018-07-23 21:12:55

标签: angular url-routing angular-routing

我正在使用ng serve在本地开发机器上运行Angular 6项目。例如,我有以下端点:

  • /登录
  • /购物车

当我的项目在localhost:4200上运行时,我可以键入以下任意内容,并且它们都是有效的(浏览器将成功加载相应的页面):

  • localhost:4200
  • localhost:4200 / login
  • 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。

2 个答案:

答案 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