Use web.config to redirect HTTP to HTTPs

I have installed WordPress on my IIS server and I also have the SSL Certificate installed.

I have researched every thread I could find on this, but still couldn’t get it work. I found this thread from a guy on Apache who is facing the same issue, but I am on IIS and don’t know how to get it to work with IIS.

Read More

Similar to that thread, here is what is happening:

https://www.example.com is working great

https://example.com is redirecting to the above, also great!

Here is the problem:

http://www.example.com is still accessible, no good, as this should redirect to https://www.example.com

Also:

http://example.com redirects to http://www.example.com.

How can I fix this, so that it all redirects to https://www.example.com?

I am on IIS and here is what my web.config looks like:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
        <rules>
            <rule name="WordPress Rule" stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php" />
            </rule>
        </rules>
        </rewrite>
    </system.webServer>
</configuration>

Related posts

2 comments

  1. Thanks to Dan, this worked.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <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>
                <rule name="WordPress Rule" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
            </rewrite>
        </system.webServer>
    </configuration>
    
  2. First I would like to suggest you to get extension called “URL Rewrite” on your IIS.

    Then you should match your code with the following code:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
              <add input="{SERVER_PORT_SECURE}" pattern="^1$" />
              <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/OWA/" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    

Comments are closed.