Удалите "www" из URL в global.asax

Я использую следующее, чтобы заставить https на моем сайте:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
 if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
 {
 Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"]
 + HttpContext.Current.Request.RawUrl);
 }
}

Есть ли что-нибудь, что я могу добавить к этому коду, который также удалит "www" из URL-адреса? Таким образом, если пользователь набирает " http://www.URL.net ", он автоматически перейдет на " https://URL.net ".

** Примечание: я использую IIS6 и не могу перейти на IIS7.

2 ответа

Пользователь "acfrancis" решил проблему:

замените Request.ServerVariables["HTTP_HOST"] с Regex.Replace(Request.ServerVariables["HTTP_HOST"], @"^www\.", "", RegexOptions.IgnoreCase)

Итак, полный код:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
 if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
 {
 Response.Redirect("https://" + Regex.Replace(Request.ServerVariables["HTTP_HOST"], @"^www\.", "", RegexOptions.IgnoreCase) + HttpContext.Current.Request.RawUrl);
 }
}

Работает отлично. Заставляет HTTPS и удаляет WWW из URL-адреса.


Я рекомендую сделать это с расширением URL Rewriter IIS.

Помимо переписывания URL-адресов, он также может выполнять перенаправления, включая встроенный шаблон для канонических имен хостов. Таким образом, перенаправление применяется к каждому запросу, а не только к тем, которые проходят через ASP.NET.

licensed under cc by-sa 3.0 with attribution.