Microsoft rewriting module - Force www on URL Or remove www from URL

asp.net, iis-7, url-rewrite-module, url-rewriting, web-config

Solution

To remove the www from a domain and redirect to a "naked domain" you could di it like in the following code snippet:

<rewrite>
  <rules>
    <rule name="Remove WWW prefix" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^www\.yourdomain\.example$" />
      </conditions>
      <action type="Redirect" url="http://yourdomain.example/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

And the other way around (if you prefer that) to redirect a non-www to one with www:

<rewrite>
  <rules>
    <rule name="Add WWW prefix" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^yourdomain\.example$" />
      </conditions>
      <action type="Redirect" url="http://www.yourdomain.example/{R:0}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

The `redirectType="Permanent"` is of course optional but for SEO and most scenarios I would recommend it.

Please see also these Stack Overflow questions/answers:

- IIS7 URL Rewrite - Add "www" prefix

- Forwarding http://mydomain.example/ctrlr/act/val to http://WWW.mydomain.example/ctrlr/act/val

- Proper method to remove www from address using IIS URL Rewrite

Problem

I have a shared hosting plan with Windows Server 2008 and IIS7.5, and there is Microsoft rewriting module installed and enabled. ``` <rewrite> <rules> <rule name="myRule" patternSyntax="Wildcard"> <!--Rewriting code--> </rule> </rules> </rewrite> ``` So, how to redirect `mydomain.example/everywhere-in-site/my-page.html` to `www.mydomain.example/everywhere-in-site/my-page.html` with Microsoft rewriting module? And what if I want to redirect `www.mydomain.example/everywhere-in-site/my-page.html` to `mydomain.example/everywhere-in-site/my-page.html`?

Original source

Related problems