Search code examples
asp.netiiswebformsweb-configwebserver

http to https in IIS


I realize this is a simple question, but I'm just not finding the answer. I've applied the below rule...

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

The url I'm interested in has the pattern

http://[domain]/[directory]/[aspx page]

So http://example.com/funstuff/thefair.aspx

The result of the rewrite is http://[domain]/[an_aspx_page]

So the rewrite is removing the directory.

I assumed the {R:1} specifies a parameter that will be rewritten, and I tried https://{HTTP_HOST}/{R:1}/{R:2}, but this result in a 500 error.

I want to direct all traffic on this domain to https without changing the rest of the url entered by the user.


Solution

  • Here's what we use on one of our sites to auto-redirect all traffic to the https version. It also includes everything else in the url.

    <rewrite>
          <rules>
              <clear />
              <rule name="Redirect to https" enabled="true" 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="true" />
              </rule>
          </rules>
      </rewrite>