如何配置 Nginx 以使用 html5 模式

2024-03-24

对于 angularjs 中的干净网址,我必须使用$locationProvider.html5Mode(true);但是当我刷新页面时,它显示 404。

我读到我需要配置服务器文件。

结构

 /html -
 /views -
   home.html
   about.html
   contact.html
 index.html
 app.js

到目前为止我所做的:

nginx.conf

server {
    root /html/views;
    index index.html;

    location / {
    try_files $uri $uri/ =404;
    }
}

Angular HTML5 定位模式基本上利用 HTML5 历史记录 API 来“模拟”客户端中的 URL 变化。但从服务器的角度来看,URL 可能不是真实的(不存在),因此不可能在服务器上找到这些页面。通常有两种解决方案可以让服务器知道URL:

  1. 使用服务器端渲染。这被另一个名为 ReactJS 的框架广泛使用。实际上 AngularJS 2.0 也可以在服务器上运行。因此,可以在服务器端生成真实页面并将其提供给客户端。
  2. 使用 HTTP 服务器重写技术。这就是你正在尝试做的事情。这个想法是将所有相关请求转发到单个 AngularJS 入口点 HTML 页面,通常是index.html从根源上。

对于您的情况,假设 AngularJS 的入口点是/index.html。尝试这个:

server {
    root /html/views;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html =404;
    }
}

之前的解决方案并不完美,因为它会任意测试每个请求。我们可以通过指定更详细的规则来避免不必要的 URL 查找:

server {
    root /html/views;
    index index.html;

    rewrite "^/users" /index.html last;
    rewrite "^/pages" /index.html last;
    ...
}

使用正则表达式来匹配您想要通过 Angular 提供服务的 URL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 Nginx 以使用 html5 模式 的相关文章

随机推荐

  • Android:中心启动屏幕图像

    我有一个带有启动屏幕的应用程序 启动屏幕在小型设备上看起来不错 但在大型平板电脑 模拟器 上看起来很糟糕 所以我把背景改成了wrap content 但它看起来与屏幕的一侧对齐 有人可以告诉我一种将背景图像居中的方法吗 这是我的splash
  • SublimeLinter ESLint 找不到插件

    在 Sublime Text Editor 3 x 中编辑 javascript 文件时 出现错误 Oops Something went wrong ESLint 6 0 1 ESLint couldn t find the plugin
  • 访问验证管道中的请求对象

    我正在尝试访问Request object从一个内Validation Pipe in nestjs 为了验证某些字段的唯一性 我需要ID UUID提供的参数PUT PATCH请求 数据结构本身不可用 任何想法 目前 根本不可能在 a 中访
  • Qt——将事件传递给多个对象?

    我基本上有3层 Window gt Scene gt View 每个人都需要处理一个mouseMove事件不妨碍其他人 不过 似乎只有最小的孩子才能参加该活动 我希望我可以处理该事件然后致电event gt ignore 将事件传递回堆栈
  • 如何处理 Google Cloud Functions 中的机密?

    这里的常见做法是什么 好像没有提供工具gcloud 我现在正在从本地计算机部署功能 因此我可以对秘密进行硬编码 但这似乎不合适 另外 CI CD 怎么样 在这种情况下 我需要将秘密作为环境变量传递 这甚至可能吗 您可以使用秘密经理 http
  • 代码格式化:如何将多行代码与特殊字符对齐?

    IDEA 或其插件之一能够将代码与特殊字符对齐吗 我的意思是这样代码 Map name gt Peter age gt 27 company gt Foobar 变换为 Map name gt Peter age gt 27 company
  • 是否有任何回调或任何东西(事件或nodeInfo中的任何参数)来知道辅助功能服务(TalkBack)已完成阅读?

    我有一个应用程序要求在列表视图中宣布文本 列表视图项在运行时添加 我必须一一宣布 我在谷歌和android文档中搜索 但我无法到达那里 请帮助我 如何知道无障碍服务读完文本 谢谢 简单的答案 不要这样做 这是愚蠢的 只需使用您可用的辅助功能
  • 如果是十进制值,则转换为两位小数并且将点分隔值转换为逗号分隔

    我目前的值如下所示 30 32 5 如果存在任何小数 如第二个示例 如何将它们转换为具有两位小数 并且将点分隔符替换为逗号 转换后 上面的数字将如下所示 30 32 50 Try var num 32 5 num num toFixed 2
  • 从另一个路由调用 hapi 路由

    我对 HapiJS 还很陌生 我正在构建一个服务 其中有两条路线 route 1 和 route 2 都使用插件架构 我已将两者注册为我的清单文件中的插件 我想从 route2 调用 route1 因此 route2 取决于 route1
  • 嵌套事务-回滚场景

    A con begin B con rollback con commit B con begin con commit 在上面的代码中 我在 A 处开始一个新的数据库事务 它成功执行了一些事务 之后B 开始执行 并且它也成功执行了一些事务
  • 在头文件中使用声明

    我一直在寻找有关使用的一些说明使用声明在头文件中 我正在四处搜索 但无法完全得到我正在寻找的答案 到目前为止我的研究得出的结论是 将它们用于非全局的范围是好的 而命名空间指令则不好 我明白 至少我希望如此 所以在我的例子中我使用shared
  • 如何获取到 CGPath 的距离以进行命中测试?

    我有一个打开的 CGPath UIBezierPath 我想检测用户是否触摸它 即某个点是否在距路径一定距离内 路径是开放的 即直线 曲线 而不是形状 它可以包含直线和曲线元素 如何获得到路径的距离来进行命中测试 CGPath UIBezi
  • 如何等待matplotlib动画结束?

    考虑直接取自 Matplotlib 文档的以下代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as animation im
  • CORS 中的 POST/GET 与 PUT/DELETE

    我刚刚读过this https www w3 org Security wiki Same Origin Policy 同源策略允许使用 GET 和 POST 的跨源 HTTP 请求 方法 但拒绝源间 PUT 和 DELETE 请求 PUT
  • 使用VBA调用存储过程

    我正在使用 Access 2010 用户前端和 Microsoft SQL Server 2008 后端工作 Access 中的表都链接到 SQL Server 数据库 我有一个存储过程 它将新值 由参数提供 插入到表中 我之前问过类似的问
  • Ruby on Rails - 表情符号未保存在 MySQL 中

    我正在开发一个 Rails 应用程序 用户可以将照片上传到他们的个人资料中 每张照片都有一个标题 该标题应该支持表情符号 尽管将表的编码更改为utf8mb4并修改数据库 yml当我尝试保存标题中带有表情符号的照片时 MySQL 返回错误 字
  • ThreadStart.BeginInvoke 在 Compact 框架上抛出 NotSupportedException

    我正在一个紧凑框架项目上使用线程 并且代码如下所示 当我尝试进入 StartThreads 时 会抛出 NotSupportedException 这看起来有点奇怪 为什么异常是在调用 StartThreads 的行上抛出的 而不是在内部抛
  • purrr 将 t.test 映射到分割的 df 上

    我是新来的咕噜声 Hadley https stackoverflow com users 16632 hadley有前景的函数式编程R库 http blog rstudio org 2015 09 29 purrr 0 1 0 我正在尝试
  • 为什么人们不访问 Rspec 中的数据库?

    我经常看到Rspec中使用mock的代码 如下所示 describe GET show do it should find and assign question do question Question new Question shou
  • 如何配置 Nginx 以使用 html5 模式

    对于 angularjs 中的干净网址 我必须使用 locationProvider html5Mode true 但是当我刷新页面时 它显示 404 我读到我需要配置服务器文件 结构 html views home html about