IIS 使用子文件夹将 http 重写为 https

Posted

技术标签:

【中文标题】IIS 使用子文件夹将 http 重写为 https【英文标题】:IIS Re-write http to https with subfolders 【发布时间】:2015-11-16 01:48:42 【问题描述】:

尽管听起来很简单,而且我搜索过很多,但我无法得到

http://example.com/subfolder 使用 IIS 重写重定向到 https://example.com/subfolder。

注意:这仅适用于浏览器中明确声明“http”的情况。

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="HTTPS" pattern="off" />
                </conditions>
                <action type="Redirect" url="https://HTTP_HOSTREQUEST_URI" redirectType="Found" />enter code here

谢谢!

【问题讨论】:

asp.net c# redirecting from http to https的可能重复 【参考方案1】:

您的规则的问题是重定向操作中的 REQUEST_URI 是请求的整个 URI。你想要的是规则匹配的结果。 R1 会给你这个。 This answer gives a good explanation of the rule back-references。可以这样构造一个工作规则:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
      <add input="HTTPS" pattern="off" ignoreCase="true" />
    </conditions>
    <action type="Redirect" redirectType="Permanent" url="https://HTTP_HOST/R:1" />
    </rule>
  </rules>
</rewrite>

【讨论】:

以上是关于IIS 使用子文件夹将 http 重写为 https的主要内容,如果未能解决你的问题,请参考以下文章

IIS 重写模块和子应用程序

IIS7.5 URL 重写:不要将 POST 转换为 GET

将规则重写为IIS以将HTTPS重定向到HTTP会导致null HttpContext.Request.ContentType

在 IIS7 中将 URL 从 https:// 重写为 http://

使用IIS7 URL重写将请求转发到内部Web服务器的虚拟目录

IIS 重写虚拟文件夹