Rewrite rule to HTTPS except when on localhost

后端 未结 2 623
我寻月下人不归
我寻月下人不归 2020-12-24 06:00

I am using the answer given here as the basis for trying to add a rewrite rule to my web.config file. I want it to match any url that is not running on localhost in order to

相关标签:
2条回答
  • 2020-12-24 06:23

    Try this condition:

    <system.webServer>
      <rewrite>
        <rules>
          <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
            <match url="^(.*)$"/>
            <conditions>
              <add input="{HTTPS}" pattern="^OFF$"/>
              <add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost$" negate="true" /> 
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
    

    Using a negate condition against the localhost pattern should do the trick.

    0 讨论(0)
  • 2020-12-24 06:31

    Adding to anubhava's answer, you can replace the add element for localhost with the following 2 entries to cater for both localhost and 127.0.0.1 with optional ports e.g localhost:59400 which is the case when debugging through visual studio and IIS

    <add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
    <add input="{HTTP_HOST}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />    
    

    With the original answer, localhost:123 would be redirected to https which may not be desirable.

    0 讨论(0)
提交回复
热议问题