Using URL Rewrite with Web Site Testing

Recently I ran into an interesting situation when I was rolling out a new web-based application. I had tested it on my development server, and because it was a rather complex application I wanted to test it on my production server before making it live. I had already set up a placeholder web site with a home page that announced the new site as "Coming Soon," and I had some of the supporting infrastructure configured for the placeholder site: database connections, permissions, FTP bindings, etc.

In order to test the new site, I could have set up a temporary web site by duplicating the placeholder web site, running my tests, and then deleting the temporary site after I was comfortable that everything was working in production. Or I could simply remove the placeholder web site and replace it with the temporary web site once the testing phase was over. I didn't like either of those ideas, so I came up with much easier solution using URL Rewrite. Here are the details:

First, I added an additional host header binding to the placeholder web site with a temporary name that only I knew about. Since I use a wildcard A record for my DNS, I can add any additional prefixes to my domain name without registering those as CNAME records in DNS. (This makes the temporary name more difficult to discover.) For example, if I created an A record for "*," then I could use "" without any changes to DNS.

Second, I added a URL Rewrite rule that checked all inbound requests by using the following logic:

  • If the request was for "", then URL Rewrite would allow regular access the web site.
  • If the request was for any other domain name and any web page other than "ComingSoon.htm", then URL Rewrite would redirect those requests to "/ComingSoon.htm".

Here's what the URL Rewrite rule looked like in my web.config file:

<clear />
<rule name="Temporary Redirect" patternSyntax="Wildcard" stopProcessing="true">
<match url="ComingSoon.htm" negate="true" />
<add input="{HTTP_HOST}" negate="true" pattern="" />
<action type="Redirect" url="/ComingSoon.htm" appendQueryString="false" redirectType="Found" />

This allowed me to test the web site on my production server by using a temporary domain name that no one else knew about, and sending every other HTTP request to the "Coming Soon" announcement page. After a few days of putting the web site through some test passes, all that I needed to do was to remove the URL Rewrite rule and the site was officially live.

No Comments