Creating Redirect in IIS7 from HTTP to HTTPS after Installing SSL Certificate

IIS Redirect HTTP to HTTPS

Setting up an HTTP/HTTPS redirect in IIS

Once the SSL certificate is installed, your site still remains accessible via a regular insecure HTTP connection. To connect securely, visitors must specify the https:// prefix manually when entering your site’s address in their browsers.

In order to force a secure connection on your website, it is necessary to set up a certain HTTP/HTTPS redirection rule. This way, anyone who enters your site using a link like “yourdomain.com” will be redirected to “https://yourdomain.com” or “https://www.yourdomain.com” (depending on your choice) making the traffic encrypted between the server and the client side.

Below are steps to setup a IIS HTTPS redirect:

    1. Download and install the “URL Rewrite” module.
    2. Open the “IIS Manager” console and select the website you would like to apply the redirection to in the left-side menu:
    3. Double-click on the “URL Rewrite” icon.
    4. Click “Add Rule(s)” in the right-side menu.
    5. Select “Blank Rule” in the “Inbound” section, then press “OK”:
    6. Enter any rule name you wish.
    7. In the “Match URL” section:- Select “Matches the Pattern” in the “Requested URL” drop-down menu 
      – Select “Regular Expressions” in the “Using” drop-down menu 
      – Enter the following pattern in the “Match URL” section: “(.*)” 
      – Check the “Ignore case” box
    8. In the “Conditions” section, select “Match all” under the “Logical Grouping” drop-down menu and press “Add”.
    9. In the prompted window:
      – Enter “{HTTPS}” as a condition input 
      – Select “Matches the Pattern” from the drop-down menu 
      – Enter “^OFF$” as a pattern 
      – Press “OK”
    10. In the “Action” section, select “Redirect” as the action type and specify the following for “Redirect URL”:https://{HTTP_HOST}{REQUEST_URI}
    11. Check the “Append query string” box.
    12. Select the Redirection Type of your choice. The whole “Action” section should look like this:

NOTE: There are 4 redirect types of the redirect rule that can be selected in that menu: 
– Permanent (301) – preferable type in this case, which tells clients that the content of the site is permanently moved to the HTTPS version. Good for SEO, as it brings all the traffic to your HTTPS website making a positive effect on its ranking in search engines. 
– Found (302) – should be used only if you moved the content of certain pages to a new place *temporarily*. This way the SEO traffic goes in favour of the previous content’s location. This option is generally not recommended for a HTTP/HTTPS redirect. 
– See Other (303) – specific redirect type for GET requests. Not recommended for HTTP/HTTPS. 
– Temporary (307) – HTTP/1.1 successor of 302 redirect type. Not recommended for HTTP/HTTPS.

  1. Click on “Apply” on the right side of the “Actions” menu.

The IIS redirect can be checked by accessing your site via http:// specified in the URL. To make sure that your browser displays not the cached version of your site, you can use anonymous mode of the browser.

The rule is created in IIS, but the site is still not redirected to https://

[Skip to #6 and #7 Below “SOLVED.” This is my recommended tip which I doubt that you will find elsewhere on the net.  You will see the logic.]

Normally, the redirection rule gets written into the web.config file located in the document root directory of your website. If the redirection does not work for some reason, make sure that web.config exists and check if it contains the appropriate rule.

To do this, follow these steps:

  1. In the sites list of IIS, right-click on your site. Choose the “Explore” option:
  2. “Explore” will open the document root directory of the site. Check if the web.config file is there.
  3. The web.config file must have the following code block:
    <configuration>
     <system.webServer>
     <rewrite>
     <rules>
     <rule name="HTTPS force" enabled="true" stopProcessing="true">
     <match url="(.*)" />
     <conditions>
     <add input="{HTTPS}" pattern="^OFF$" />
     </conditions>
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
     </rule>
     </rules>
     </rewrite>
     </system.webServer>
    </configuration>
  4. In Windows File Explorer on the IIS Server, open the web.config file using a good editor like Notepad++.  Make sure the elements of this rule are contained between one set of beginning and ending rule elements, that is between <rule> {redirect rule code goes here] </rule>.  There may have been one or more existing rules already configured between the “<rules></rules>” elements.
  5. If the web.config file is missing, you can create a new .txt file, put the aforementioned code there, save and then rename the file to web.config.
  6. [SOLVED]  Go into your IIS Management Console and click to select your website name on the left menu.  Click “Bindings” on the far right action column.  In the bindings page dialog, you should see an existing “https” host header for yourdomain.com that has the SSL certificate bind to it in order to handle SSL.  Make sure you ADD an http: host header for www.yourdomain.com and ADD an http: host header for yourdomain.com (without the www) to handle Non-SSL.  YOU NEED THE NON-SSL headers to capture the web query before it can be redirected to https SSL for the encryption to be handled by your SSL Certificate.
  7. [SOLVED] ALSO, make sure NOT to require SSL from within IIS.  Select your website on the left.  Double click on the SSL icon in the middle pane.  CLEAR THE CHECKBOX THAT WOULD REQUIRE SSL.  APPLY.
  8. Click the text Restart link on the far right pane / column of the IIS management console (mmc snapin) to restart the websits.
  9. Open and CMD.exe prompt from the Start / Run in Windows Server.
  10. Stop and Start the Web Service.  In the command prompt window, type “net start w3svc” and [Enter]. Wait until the service is stopped.  Then, type “net start w3svc” and [Enter]. Wait until the service is started.  Close the command prompt window (X out or exit).
  11. Go test the website from a remote browser by typing in the address bar www.yourdomain.com and it should properly redirect to https//your domain.com.  Accomplished.  

If this article helped you and saved considerable time and effort, please consider donating a little something through paypal to support continued hosting of this site.  Thank you.