Вопрос по asp.net, iis-6 – IIS 6 как перенаправить с http://example.com/* на http://www.example.com/*

4

Я использую asp.net 3.5 и IIS 6.

Как мы можем автоматически перенаправлять страницы сhttp(s)://example.com/* к?http(s)://www.example.com/*

Благодарю.

Ваш Ответ

3   ответа
0

производительность будет лучше, если вы разрешите IIS обрабатывать перенаправление. Для этого создайте новый веб-сайт с заголовком узла, равным example.com, и используйте диспетчер IIS для настройки перенаправления.

Проблема с этим подходом заключается в том, чтонет способа перенаправить сhttps://domain.com вhttps://www.domain.com - параметры перенаправления для "другой сайт или каталог дон»t разрешить использование подстановочного знака в защищенной части (microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/...). Zhaph - Ben Duguid
0

Страница MSDN может помочь тебе

6

Я сделал это с 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();
        }
      }
    }
  }
}
</add>

Затем нам нужно добавить модуль в наш Web.Config:

Найти раздел в раздел, там уже может быть пара других записей, и добавить что-то вроде:

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

Вы можете увидеть это в действии здесь:

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

Все в конечном итогеhttp://www.doodle.co.uk

Нет проблем (почему я так благодарен? О, потому что мне нужно набрать эссе в поле для комментариев. Я помню, когда в этом окне было менее 200 символов. Посмотрите на него сейчас, требуя много символов и принимая в общей сложности 600 символов). - Это'раздувать и размахивать я тебе скажу!) Zhaph - Ben Duguid
благодарю вас. работает отлично Anwar Chandra
Отлично! Одна вещь, которая неХотя, если бы у меня была перезапись URL-адреса, это не помогло бы мне. Я обнаружил, что изменение строки newUrl на следующую (в VB) решило проблему:Dim newUrl As String = String.Format ("HTTP {0}: // {1}», IIf (CBool (context.Request.ServerVariables ("HTTPS»знак равновыкл»), "", "s"), m_Domain + context.Request.RawUrl) Curt

Похожие вопросы