IIS 7.5 Redirect / URL Rewrite to mobile version of website

You should be able to use a condition in your IIS rewrite rule.

<rule name="MobileBrowser" stopProcessing="true">
  <match url=".*" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_COOKIE}" pattern="nomobile" ignoreCase="true" negate="true" />
    <add input="{REQUEST_URI}" pattern="/mobile.*" negate="true" />
    <add input="{FileContains:{HTTP_USER_AGENT}}" pattern=".+" />
  </conditions>
  <action type="Rewrite" url="http://mysite.com/mobile" appendQueryString="false" redirectType="Found" />
</rule>

I don't have a 2008R2 machine to test, and make sure my syntax is correct but it should be enough to get you in the right direction.

The basics of this rule says:

  • Match any URL
  • As long as the browser does not have the "nomobile" cookie
  • The request URL does not already have /mobile in it
  • The user agent matches the contents of a file.

This rule requires the use of a custom provider so you can store all the various user agents that might be mobile (and there is a long list of them). To setup the custom provider, take a look here.

I added the cookie check as some people still like to look at the full size site, even on their mobile device. This gives you a way to handle that by setting a cookie on their browser, and the rule skips them.

There is a slightly simpler version here that matches on a couple of examples too.