如何配置IIS以在HTML5模式下用URL重写AngularJS应用程序?

问题描述

如问题DO中所示,IIS入站规则有效。我必须清除浏览器缓存,并<head>在index.html页面的本节顶部添加以下行:

<base href="/myApplication/app/" />

这是因为我在本地主机中有多个应用程序,因此对其他部分的请求被localhost/app/view1代替localhost/myApplication/app/view1

希望这可以帮助某人!

解决方法

我有AngularJS种子项目,并添加了

$locationProvider.html5Mode(true).hashPrefix('!');

到app.js文件。我想将IIS 7配置为将所有请求路由到

http://localhost/app/index.html

这样对我有用。我该怎么做呢?

更新:

我刚刚发现,下载并安装了IIS URL Rewrite模块,希望这将使实现我的目标变得容易且显而易见。

更新2

我想这总结了我要实现的目标(摘自AngularJS
Developer文档
):

使用此模式需要在服务器端重写URL,基本上,您必须重写指向应用程序入口点的所有链接(例如index.html)

更新3:

我仍在努力,我意识到我不需要重定向(具有重写规则的)某些URL,例如

http://localhost/app/lib/angular/angular.js
http://localhost/app/partials/partial1.html

因此,css,js,lib或partials目录中的所有内容都不会重定向。其他所有内容都需要重定向到app / index.html

任何人都知道如何轻松实现此目标而不必为每个文件添加规则?

更新4:

我在IIS URL重写模块中定义了2个入站规则。第一条规则是:

IIS URL重写入站规则1

第二条规则是:

IIS URL重写入站规则2

现在,当我导航到localhost / app /
view1时,它会加载页面,但是支持文件(css,js,lib和partials目录中的文件)也将被重写到app /
index.html页面中,因此一切都来了无论使用什么URL,都返回index.html页面。我想这意味着我的第一个规则(该规则应防止第二个规则处理这些URL)不起作用。…任何人?…我感觉很孤独…
:-(

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...