我正在使用以下内容强制在我的网站上使用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。
答案 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的请求。