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

前端 未结 4 1929
礼貌的吻别
礼貌的吻别 2020-12-18 08:56

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/* ?

相关标签:
4条回答
  • 2020-12-18 09:04

    This MSDN page might help you.

    0 讨论(0)
  • 2020-12-18 09:15

    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.

    0 讨论(0)
  • 2020-12-18 09:17

    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:

    • http://doodle.co.uk
    • http://doodlegraphics.co.uk
    • http://www.doodle-graphics.co.uk

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

    0 讨论(0)
  • 2020-12-18 09:19

    I think that's best done with DNS.

    0 讨论(0)
提交回复
热议问题