角路由如何优先于静态站点上的文件路径

时间:2018-12-19 17:25:08

标签: angular angular-routing angular-router

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

-index.html
-blog/index.html

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

如何?

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

我认为它可以这样工作真是太棒了,但是我不知道它在技术上是怎么可能的。

1 个答案:

答案 0 :(得分:2)

apache或nginx或您的Web服务器所需要的任何东西都需要正确,有意地配置为提供有角度的应用。对于各种Web服务器配置,有无数的指南,但是通常,您将配置任何404错误以重定向到项目根目录index.html页面。但是,在使用REAL 404的情况下,应设置您的角度应用程序以正确处理它。

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