URL-адрес IIS Rewrite https правило игнорирование localhost

Я пытаюсь написать правило перезаписи 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 без помощи. Кто-нибудь есть идея, почему это не работает и какое решение для этой проблемы должно быть?

Ответ 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>