IIS 6 how to redirect from http://example.com/* to http://www.example.com/*

I am using asp.net 3.5 and IIS 6.

How can we automatically redirect pages from http(s)://example.com/* to http(s)://www.example.com/* ?

thanks.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I did this with an HttpModule:

namespace MySite.Classes
{
  public class SeoModule : IHttpModule
  {
    // As this is defined in DEV and Production, I store the host domain in
    // the web.config: <add key="HostDomain" value="www.example.com" />
    private readonly string m_Domain =
                            WebConfigurationManager.AppSettings["HostDomain"];

    #region IHttpModule Members

    public void Dispose()
    {
      //clean-up code here.
    }

    public void Init(HttpApplication context)
    {
      // We want this fire as every request starts.
      context.BeginRequest += OnBeginRequest;
    }

    #endregion

    private void OnBeginRequest(object source, EventArgs e)
    {
      var application = (HttpApplication) source;
      HttpContext context = application.Context;

      string host = context.Request.Url.Host;
      if (!string.IsNullOrEmpty(m_Domain))
      {
        if (host != m_Domain)
        {
          // This will honour ports, SSL, querystrings, etc
          string newUrl = 
               context.Request.Url.AbsoluteUri.Replace(host, m_Domain);

          // We would prefer a permanent redirect, so need to generate
          // the headers ourselves. Note that ASP.NET 4.0 will introduce
          // Response.PermanentRedirect
          context.Response.StatusCode = 301;
          context.Response.StatusDescription = "Moved Permanently";
          context.Response.RedirectLocation = newUrl;
          context.Response.End();
        }
      }
    }
  }
}

Then we need to add the module to our Web.Config:

Find the section <httpModules> in the <system.web> section, it may well have a couple of other entries in there already, and add something like:

<add name="SeoModule" type="MySite.Classes.SeoModule, MySite" />

You can see this in action here:

All end up on http://www.doodle.co.uk

Method 2

This MSDN page might help you.

Method 3

In general, the performance will be better if you let IIS handle the redirection. To do that, create a new web site with the host header set to example.com, and use IIS Manager to configure the redirection.

Method 4

I think that’s best done with DNS.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x