IIS URL重写https规则忽略本地主机

Posted

技术标签:

【中文标题】IIS URL重写https规则忽略本地主机【英文标题】:IIS URL Rewrite https rule ignoring localhost 【发布时间】:2014-11-30 22:05:02 【问题描述】:

我正在尝试编写 URL 重写规则来强制建立 HTTPS 连接。这应该总是发生,除非请求使用 localhost(例如http://localhost/mysite)。

规则配置如下:

 <rule name="Redirect to https" enabled="true" stopProcessing="true">
      <match url="(.*)" negate="false" />
      <conditions trackAllCaptures="false">
           <add input="HTTPS" pattern="^OFF$" />
           <add input="URL" pattern="localhost" negate="true" />
      </conditions>
      <action type="Redirect" url="https://HTTP_HOST/R:1" />
 </rule>

我还尝试在没有帮助的情况下使用 ^localhost 和 ^localhost/(.*) 作为 URL 条件的模式。 有谁知道为什么这不起作用以及这个问题的解决方案应该是什么?

【问题讨论】:

哪个版本的 IIS?您可能想用它来更新您的问题。 现在我在 IIS8 上使用它。但是您已经提供了解决方案。非常感谢。 【参考方案1】:

您的代码应该如下所示

<rule name="Redirect to https" enabled="true" stopProcessing="true">
   <match url="(.*)" />
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
      <add input="HTTPS" pattern="off" />
      <add input="HTTP_HOST" pattern="localhost" negate="true" />
   </conditions>
   <action type="Redirect" url="https://HTTP_HOST/R:1" />
</rule>

【讨论】:

以上是关于IIS URL重写https规则忽略本地主机的主要内容,如果未能解决你的问题,请参考以下文章

当从HTTPS协议发出请求时,IIS URL重写规则(Pattern)无法识别{HTTP_HOST}

thinkphp在iis下如何写规则url重写

IIS url 重写角色,除了一些 url

如何配置iis rewrite模块的url重写规则

IIS URL将Http重写为Https,排除单个URL

IIS-URL重写参数