【发布时间】:2018-07-22 05:27:05
【问题描述】:
我在 IIS 中托管了一个 Angular 应用程序。为了将所有请求重定向到应用程序的根目录并允许角度路由处理不同的路由,我添加了一个带有 URL Rewrite 规则的 web.config 文件,如下所示:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
它工作正常。但是,我现在需要强制应用程序从 HTTP 重定向到 HTTPS。为此,我可以添加一条新规则,如下所示:Angular 2 - always redirect to https:// instead of using http://
强制使用 HTTPS 的规则:
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
此规则也有效,但它破坏了我之前定义的重定向到根规则。那么有没有人知道如何将这两个规则混合在一起,或者我可以通过哪些其他方式来实现这两个目的?
【问题讨论】:
-
我遇到了同样的问题..你能解决吗?
-
我最终用几行代码直接在 Angular 项目中强制使用 https。如果您有兴趣做同样的事情,请告诉我,我将与您分享我的代码。
-
当然.. 这对我很有帮助。我的项目在 Angular 5.3.2 中,API 项目在 dot net core 2.1.3 中。谢谢。
-
当然,我发布了替代解决方案作为答案
标签: angular redirect iis https url-rewrite-module