首页 > 解决方案 > Angular 路由如何优先于静态站点上的文件路径

问题描述

如果我用文件结构构建一个静态站点:

-index.html
-blog/index.html

我在里面放了一个带有路由的 Angular 应用程序blog/index.html,然后转到路由example.com/blog/page/2,它会转到 Angular 应用程序中正确的博客页面。从某种意义上说,它在 Angular 应用程序中打开/blog/index.html和处理。/page/2

如何?

为什么 Apache(或 Nginx)不优先于此,并尝试打开/blog/page/2/index.html,但找不到它,显示 404?

我认为它可以像这样工作真是太棒了,但我无法弄清楚它在技术上是如何实现的。

标签: angularangular-routingangular-router

解决方案


apache 或 nginx 或任何您的 Web 服务器都需要正确且有意地配置以服务于 Angular 应用程序。各种 Web 服务器配置有无数指南,但通常您将配置任何 404 错误以重定向到项目根 index.html 页面。但是,如果出现 REAL 404,则应设置您的 Angular 应用程序以正确处理它。

这仅用于初始页面加载或刷新。一旦 Angular 应用程序启动并运行,这是一个有争议的问题,因为 Angular 拦截并处理所有导航,因此它不会再次访问您的 Web 服务器。角度路由器只是调用它需要的文件并使用浏览器历史 API 将项目推送到您的网络历史记录中以模拟正常导航。它们被称为单页应用程序,因为实际上只有一个页面从您的 Web 服务器提供过,其余的都是技巧/模拟。


推荐阅读