angular - 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?
我认为它可以像这样工作真是太棒了,但我无法弄清楚它在技术上是如何实现的。
解决方案
apache 或 nginx 或任何您的 Web 服务器都需要正确且有意地配置以服务于 Angular 应用程序。各种 Web 服务器配置有无数指南,但通常您将配置任何 404 错误以重定向到项目根 index.html 页面。但是,如果出现 REAL 404,则应设置您的 Angular 应用程序以正确处理它。
这仅用于初始页面加载或刷新。一旦 Angular 应用程序启动并运行,这是一个有争议的问题,因为 Angular 拦截并处理所有导航,因此它不会再次访问您的 Web 服务器。角度路由器只是调用它需要的文件并使用浏览器历史 API 将项目推送到您的网络历史记录中以模拟正常导航。它们被称为单页应用程序,因为实际上只有一个页面从您的 Web 服务器提供过,其余的都是技巧/模拟。
推荐阅读
- solr - SOLR中的全文基于特定字段的子字符串
- ios - 在锁定屏幕中显示正在播放项目元而不在手机上播放媒体
- c++ - C ++:如何将此指针传递给此类?
- java - 当 MySQL 本身返回 1+ 记录时,为什么我的 JDBC 代码没有返回任何记录?
- java - 带有命名参数和行映射器的列表的Java Jdbctemplate查询?
- android - 创建一个任何人都无法访问的文件夹?
- html - 如何在 CSS 中设置多个图像的样式
- c# - C# 任务 ContinueWith 未按预期工作
- python - 不能使用 selenium 点击这个元素?
- hyperledger-fabric - 未能达到 2 个子策略的隐式阈值,需要剩余 1 个