views:

1025

answers:

1

I'm trying to rewrite urls from the form:

https://example.com/about

to the form

http://example.com/about

using IIS7 URL rewriting:

  <!-- http:// to https:// rule -->
  <rule name="ForceHttpsBilling" stopProcessing="true">
    <match url="(.*)billing/(.*)" ignoreCase="true" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="false" />
    </conditions>
    <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
  </rule>

  <!-- https:// to http:// rule -->    
  <rule name="ForceNonHttps" stopProcessing="true">
    <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
    <conditions>
        <add input="{SERVER_PORT}" pattern="^443$" />
    </conditions>
    <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
  </rule>

I'm at a loss; I've been browsing the web for examples and trying every syntax I can think of. The rewrite rules I specify simply don't appear to work at all for any https requests, as if all the https:// requests are flat out invisible to the rewrite engine.

rules work fine; see answer below.

+5  A: 

Turns out that I had port :443 bound to a different website!

The above rewrite rules work fine for http:// to https:// rewriting and vice-versa -- though there might be more optimal or simple ways to do it.

Leaving this question here for future voyagers to find, as I didn't see many good examples of the https:// to http:// rewriting scenario on the web.

Jeff Atwood
Then it seems like you should go ahead and accept your own answer Jeff
Jonathan Fingland
@Jonathon: OPs have to wait 48 hours before accepting their own answer.
Alex Angas
Ouch. Bang Head Here. O
Dave Swersky