Ssl DNN重定向到https

Ssl DNN重定向到https,ssl,dotnetnuke,Ssl,Dotnetnuke,我们在Windows 2003x64标准中有一个自托管DNN 6.01.03站点 我们已经允许它使用SSL,但是我们想设置它,以便通过HTTP的用户被重定向到HTTPs 有办法吗?似乎在IIS7中我们可以使用IIS重写URL模块,但这是IIS6 请告知。谢谢 最快的方法是在DNN中将站点设置为“强制SSL” 我注意到,当使用来自IFinity.com.au的UrlMaster这样的工具时,行为会更好 设置重定向页面,并在那里指出403.4错误。重定向页面将是唯一不实施SSL的url 1.创建重定

我们在Windows 2003x64标准中有一个自托管DNN 6.01.03站点

我们已经允许它使用SSL,但是我们想设置它,以便通过HTTP的用户被重定向到HTTPs

有办法吗?似乎在IIS7中我们可以使用IIS重写URL模块,但这是IIS6


请告知。谢谢

最快的方法是在DNN中将站点设置为“强制SSL”


我注意到,当使用来自IFinity.com.au的UrlMaster这样的工具时,行为会更好

设置重定向页面,并在那里指出403.4错误。重定向页面将是唯一不实施SSL的url

1.创建重定向页面 您可以在这里使用几乎任何可用的web技术

示例:

  • (需要javascript)
在ASP.NET中,redirect.aspx的编写方式与经典ASP.NET中的编写方式类似:

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">
    protected void Page_Load(object sender, EventArgs e) 
    {   
        if (!Request.IsSecureConnection)
        {
            string query = Request.ServerVariables["QUERY_STRING"];
            query = query.Replace("http:", "https:");
            query = query.Replace("403;", "");
            query = query.Replace(":80", "");
            Response.Redirect(query);
        }
    }
</script> 

<html>
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Redirecting...
    </div>
    </form>
</body>
</html>

受保护的无效页面加载(对象发送方、事件参数e)
{   
如果(!Request.issecurereconnection)
{
string query=Request.ServerVariables[“query_string”];
query=query.Replace(“http:,“https:”);
query=query.Replace(“403;”,“”);
query=query.Replace(“:80”,”);
重定向(查询);
}
}
重定向。。。
2.检查重定向页面上是否未强制SSL

3.指向重定向页面url的第403.4点错误

另见:

帮助他人:答案分为两部分,分别来自两个不同的人:

1) 正如Mitchel所说,转到您的DNN站点设置,启用SSL并强制SSL。站点设置>高级设置>SSL设置>同时选中“启用SSL和强制SSL”

2) 正如Bruce指出的,然后你必须进入每个页面,并使其成为一个安全的页面。页面设置>其他设置>选中“安全”。我必须为所有的页面做这个。。。甚至网站管理和设置页面


您可以在
Global.asax
中设置重定向,以强制重定向托管域上的所有页面请求。这将比任何DNN设置具有更高的优先级

<script RunAt="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
  // ENABLE SSL REDIRECTS
  if (!HttpContext.Current.Request.IsSecureConnection)
  {
    Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
  }
}
</script>

受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e)
{
//启用SSL重定向
if(!HttpContext.Current.Request.IsSecureConnection)
{
重定向(“https://”+Request.ServerVariables[“HTTP_HOST”]+HttpContext.Current.Request.RawUrl);
}
}
或者,如果您使用的是自定义标头或负载平衡器

<script RunAt="server">
protected void Application_BeginRequest(object sender, EventArgs e)
{
  // ENABLE SSL REDIRECTS
  if (!string.Equals(Request.Headers["X-Forwarded-Proto"], "https", StringComparison.InvariantCultureIgnoreCase))
  {
    Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
  }
}
</script>

受保护的无效应用程序\u BeginRequest(对象发送方,事件参数e)
{
//启用SSL重定向
if(!string.Equals(Request.Headers[“X-Forwarded-Proto”],“https”,StringComparison.InvariantCultureIgnoreCase))
{
重定向(“https://”+Request.ServerVariables[“HTTP_HOST”]+HttpContext.Current.Request.RawUrl);
}
}

您是指“站点设置”、“高级设置”部分中的“SSL强制”设置吗?该设置的描述为“设置此选项时,未标记为安全的页面将无法通过SSL(HTTPS)访问”。这不是我想要的行为(我测试了它,它的工作原理如描述所示)。Jose-Mitchel在这里是正确的,这是处理http->https转换的公认方式。您需要将设置更改为“强制SSL”,但还必须将所有页面标记为“安全”。这是页面中的一个设置,但是如果希望所有页面都是安全的,您应该能够通过Sql更改所有页面的设置。+1用于说明。我也要试试这个。然而,目前重定向403.4的解决方案对我来说更好,因为将本地请求保存在HTTP中更方便(我可以通过JavaScript解决方案来实现这一点)
UPDATE dbo.PortalSettings SET SettingValue='False',其中PortalID=0,SettingName='SSLEnforced'或SettingName='SSLEnabled'
注意:我尝试了aspx示例,但没有成功。要使其正常工作,您似乎无法重定向到URL(因为请求发生了变化,所以当.aspx处理它时,它会将http://{mysite}/redirect.aspx转换为https://{mysite}/redirect.aspx(这不是我想要的,我想要转到最初请求的URL)。使用you Post,我使用了javascript示例,效果非常好。请注意,在IIS中设置自定义错误时,您应该使用“Message Type”=“File”。我使用经典ASP版本作为模板重写了.aspx示例。经过测试,它现在的工作方式与此相同。