gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:45:32 25 4
gpt4 key购买 nike

我有AngularJS seed project我已经添加了

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

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

http://localhost/app/index.html

所以这对我有用。我该怎么做?

更新:

我刚刚发现、下载并安装了 IIS URL Rewrite module ,希望这能让我的目标变得简单明了。

更新 2:

我想这总结了我想要实现的目标(取自 AngularJS Developer documentation ):

Using this mode requires URL rewriting on server side, basically you have to rewrite all your links to entry point of your application (e.g. 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 Rewrite Inbound Rule 1

第二条规则是:

IIS URL Rewrite Inbound Rule 2

现在,当我导航到 localhost/app/view1 时,它会加载页面,但是支持文件(css、js、lib 和partials 目录中的文件)也被重写到 app/index.html 页面 - 所以无论使用什么 URL,所有内容都会以 index.html 页面的形式返回。我想这意味着我的第一条规则(应该阻止第二条规则处理这些 URL)不起作用......有什么想法吗? ...任何人? ...我感到很孤独...:-(

最佳答案

我在 $locationProvider.html5Mode(true) 之后在 web.config 中写下了一条规则设置于app.js

希望能帮助别人。

  <system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>

在我的index.html中,我将其添加到 <head>

<base href="/">

不要忘记安装IIS URL Rewrite在服务器上。

此外,如果您使用 Web API 和 IIS,并且您的 API 位于 www.yourdomain.com/api,这也将起作用。因为第三个输入(条件的第三行)。

关于iis - 如何配置 IIS 以在 HTML5 模式下 URL 重写 AngularJS 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12614072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com