删除" www"来自global.asax中的URL

时间:2013-11-18 23:27:07

标签: asp.net

我正在使用以下内容强制在我的网站上使用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”吗?这样,如果用户输入“http://www.URL.net”,它将自动转到“https://URL.net”。

**注意:我使用的是IIS6,无法升级到IIS7。

2 个答案:

答案 0 :(得分:1)

用户“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。

答案 1 :(得分:0)

我建议使用IIS' URL Rewriter extension执行此操作。

除了重写URL之外,它还可以执行重定向,包括规范主机名的内置模板。这样,重定向就会应用于每个请求,而不仅仅是那些通过ASP.NET的请求。