Thursday, September 4, 2008

Redirecting one domain to another in IIS

To redirect domaina.com to domainb.com:

1.       In IIS,  create a website www.domaina.com  . it doesn't matter if it goes anywhere . my recommendation . point it to a blank directory

2.       Go into the properties of www.domaina.com

a.       Verify that the IP address is a static IP address . not (All Unassigned)  . can stay at 10.10.10.10

b.       Click the Home Directory tab

i.      Click a redirection to a URL

ii.      In the blank, type  http://www.domainb.com$S$Q

iii.      Click the exact URL typed above

iv.      Click a permanent redirection for this resource

Side recommendation, not necessary to make the above work:

In DNS, have the entries as follows:

www.domainb.com             IN           A                             10.10.10.10

www.domaina.com             IN           CNAME                www.domainb.com

FOR REFERENCE:

If anyone's ever tried to move domain, you'll know its a pain. One way to make things a little easier is to provide an automatic 301 redirect from your old domain to your new one - this marks the new destination as a permanent change, and will generally be picked up by search engines.

IIS provides an easy way to do this - but it's not immediately obvious how to get it to forward querystrings too - for instance, if you wanted to forward developerfusion.com/show.aspx?id=20 to developerfusion.co.uk/show.aspx?id=20. Here's how! (This works in both IIS 5 and IIS 6)

Go into the IIS site properties for the domain you're moving from. In the "Home Directory" tab, click the option "A redirection to a URL".

In the Redirect to box, enter the domain you wish to move to (no trailing slash), plus $S$Q - for example, http://www.developerfusion.com$S$Q

Next, check the options that state the client will be sent to "The exact URL entered above", and "A permanent redirection for this resource"

And that's it! Now, what does this $S$Q do? These are basically tags that IIS will automatically replace - $S will be replaced with the subdirectory location (such as /images/show.aspx) and $Q will be replaced with the querystring (such as ?id=30).

You might be wondering why we can't just use $Q, and then turn off "The exact URL entered above" - but in this situation, you get your domain name, then the query string, and *then* the subdirectory location - which probably isn't what you wanted!