.htaccess 用于 HTML5 模式的 AngularJS 应用程序的子文件夹

2024-03-28

概述 :

我有一个 AngularJS 应用程序,它使用$locationProvider.html5Mode(true)它由 Apache 服务器提供。到目前为止,我使用的源代码是从其他人那里访问的,我只需要重定向到 index.html 以实现 AngularJS 的 HTML5 模式。所以我有这个.htaccess为我的文件/app文件夹。

.htaccess:

<IfModule mod_rewrite.c>

    RewriteEngine on

    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]

</IfModule>

修改:

然后我添加了 Grunt 来缩小在/dist应用程序的文件夹(所以现在可以在 /app/dist 找到缩小的解决方案)。我现在想将我的应用程序的整个流量路由到缩小版本,而不会让用户更改链接。因此,实际上我想将每个调用从 /app 重定向到 /app/dist。

现在的目录结构:

app
    dist
        minified versions(css,html,js)

我尝试使用一些条件here https://stackoverflow.com/questions/990392/htaccess-rewrite-to-redirect-root-url-to-subdirectory在 /app 的 .htaccess 中并将另一个 .htaccess 文件移动到 /app/dist 中,但没有成功。我什至不知道这两者是否可以通过这种方式结合起来。我知道我可以使用 dist 文件夹作为 /app 来代替,但我真的不想这样做,因为 /app 是一个存储库,并且更容易保持更新。那么我怎样才能通过重定向来实现这一目标呢?

另外,第二件事是,是否可以以某种方式放置一个标志,以便我让 alpha 用户使用正常(未缩小)版本来更好地调试?

Update:

我为此添加了一个示例项目here https://github.com/radumvlad/angular-dist-redirect。我只保留了上面显示的初始 .htaccess 文件,您可以检查两个版本(/test and /test/dist) 如上所述工作。另外,它可能有一些未使用的代码和依赖项,但我只是从我的项目中删除了其他部分(不要判断:D)。

为此,我使用了 AngularJS 1.4.8 的初始配置,这可能会生成一些错误,如所述错误here https://stackoverflow.com/questions/29261782/ and here http://github.com/angular/angular.js/issues/11091。请随意将 AngularJS 版本更新到 1.5.8(Angular 1 的最后一个稳定版本),但请考虑以下评论科斯明·阿巴贝的帖子 https://stackoverflow.com/a/39218569/1787172以及。此外,该项目使用 npm 来安装 grunt(以及 grunt 的其他扩展),使用 Bower 来安装 Angular 和其他一些基本组件,并使用 grunt 来构建缩小版本(实际上,现在只是将资源连接到同一文件中)。如果您需要更改依赖项,请不要忘记运行bower install。如果您想重新生成 dist 文件夹,请不要忘记运行npm install and grunt build.


我假设里面/dist你有的目录index.html更新后的 URL 指向缩小的资源和正确的<base>标签。注意the <base>标签必须指向/dist folder- 只需附加/dist到您使用的值未压缩的 index.html你会没事的。

按顺序排列这些内容后,这是更新的.htaccess file:

RewriteEngine On

# Don't rewrite files
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# If the ALPHA_USER cookie is set, serve the uncompressed files
RewriteCond %{HTTP_COOKIE} ALPHA_USER [NC]
RewriteRule ^ index.html [L]

# Rewrite everything
RewriteRule ^ dist/index.html [L]

你会注意到两件事:

  • 我已经删除了RewriteCond %{REQUEST_FILENAME} -d您很可能不需要提供整个目录

  • 我已经添加了ALPHA_USERcookie 会将用户重定向到未压缩的文件。该 cookie 可以具有您想要的任何值。

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

.htaccess 用于 HTML5 模式的 AngularJS 应用程序的子文件夹 的相关文章

随机推荐

  • 注入相同类型的多个实例 - Autofac

    我试图在构造函数中注入同一类的多个实例 然而 当它们被解析时 它们总是解析为同一个实例 这是我的注册码 public Repository Class1 class1 Class1 class2 class1 class1 class2 c
  • SQLite 中的 SELECT INTO 语句

    sqlite是否支持SELECT INTO陈述 实际上我正在尝试将数据保存在table1 into table2作为修改数据之前数据库的备份 当我尝试使用SELECT INTO陈述 SELECT INTO equipments backup
  • 如何缩放具有背景大小的 div 上的背景图像

    我想要一个 div 元素拉伸 33 宽度 背景图像用 css 完成 background image url background size cover 如何在鼠标悬停或 mouseneter 上对 div 中的背景图像进行放大动画 是否有
  • 我的 Objective-C 单例应该是什么样子? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Rails 找不到临时目录(ArgumentError)

    我正在将我的 Rails 项目上传到运行 12 04LTS 的 Ubuntu 服务器 但我似乎无法解决此问题 无论我是进行捆绑安装还是尝试使用 gem 我都会收到该错误 我读了很多 但仍然无法修复它 lib ruby 2 0 0 tmpdi
  • 我可以在 Vuex 中从 getter 进行调度吗

    小提琴 here https jsfiddle net 9a6Lg2vd 6 我正在使用 Vue 2 和 Vuex 创建一个 web 应用程序 我有一个商店 我想从 getter 获取状态数据 我想要的是如果 getter 发现数据尚未填充
  • 无法加载 spacy en_core_web_trf

    正如自我指南所说 我已经安装了它 conda 环境 conda install c conda forge spacy python m spacy download en core web trf I have spacy transfo
  • Perl split 函数 - 使用重复字符作为分隔符

    我想使用重复字母作为分隔符来分割字符串 例如 123aaaa23a3 应该拆分为 123 23a3 while 123abc4 应保持不变 所以我尝试了这个 s split alpha 1 123aaaa23a3 但这返回 123 a 23
  • pygame可以使用矢量艺术吗?

    http cache kotaku com assets resources 2008 02 dbzburstcell jpg http cache kotaku com assets resources 2008 02 dbzburstc
  • QT Creator 无法在 i.Mx6 (buildroot) 上远程运行和调试

    使用基于 Qt 5 7 0 的 Qt Creator 4 0 2 我的应用程序名称是test 主板 带有 buildroot 的 i M6Q Qt 5 9 问题 A 当我运行 qt app 时显示此错误 EGL library doesn
  • 服务器端 Web 应用程序的 Google Oauth2 的 CORS 问题

    我在SO上提到了这个问题 Google oauth 400 响应 请求的资源上不存在 Access Control Allow Origin 标头 https stackoverflow com questions 36688035 goo
  • 无法在 RavenDB 2.x 中创建新数据库

    Noob RavenDB 问题 刚刚下载了 Raven 2 x 并将其设置为在 IIS 中运行 只是尝试通过 Studio 在 RavenDB 2 x 中创建一个新的数据库 我的配置中有以下设置
  • Java 8 - CrudRepository 类型中的方法 save(S) 不适用于参数(Optional

    我开始使用 spring 框架进行 java 开发 为了获得比 hello world 更复杂的东西 我找到了本教程并尝试遵循 https www toptal com spring beginners guide to mvc with
  • 为什么在 Java 中右移 16 乘以 32 结果是 16 而不是 0? 16>>32 = 16 为什么? [复制]

    这个问题在这里已经有答案了 我在java中使用右移运算符时遇到了一个奇怪的情况 当我右移 16 乘 31 时 结果为 0 但是尝试右移 16 乘 32 时 它本身仍然是 16 有人可以解释一下吗 因为我对此感到疯狂 public class
  • 如何将对话框指令与 Alexa 的 java SDK 一起使用

    我正在尝试使用 java 技能套件创建我自己的 Alexa 技能 并且我想使用对话框界面 我已经使用测试版的技能生成器创建了我的对话模型 但现在我不明白我需要通过我的网络服务返回什么才能委托我的对话 我应该使用哪个类向 Alexa 发送命令
  • WP7 TimePicker 选择 24 小时格式的时间

    有没有办法让WP7的TimePicker允许用户选择24小时格式的时间 如果我将 TimePicker ValueStringFormat 设置为 0 HH mm ss 它会以 24 小时格式显示 但当我单击它时 输入时间仍为 12 小时格
  • 编译器预处理期间的数学运算

    我经常遇到这样的情况 我需要在编译时生成几个常量以用于移位和屏蔽操作 e g define blockbits 8 define blocksize 256 could be generated from 2 blockbits defin
  • 字母数字会包含 _ 和空格吗?

    如果字段定义为字母数字 是否允许使用空格和下划线 我希望他们不是 有人能证实吗 根据定义 字母数字字符仅包含字母 A 到 Z 和数字 0 到 9 空格和下划线通常被视为标点符号 因此不应该允许使用它们 如果某个字段明确指出 字母数字字符 空
  • Perl 中有 inf 常量吗?

    我正在为算法初始化一个无穷大的列表 写作 x 9 9 9感觉不直观 而且我将来可能想使用 BigInt 1 0抛出错误 获得的规范方法是什么inf 您可以使用特殊字符串 inf perl E say inf 1 inf perl E say
  • .htaccess 用于 HTML5 模式的 AngularJS 应用程序的子文件夹

    概述 我有一个 AngularJS 应用程序 它使用 locationProvider html5Mode true 它由 Apache 服务器提供 到目前为止 我使用的源代码是从其他人那里访问的 我只需要重定向到 index html 以