仅在SSL请求上重定向到另一个域MVC

时间:2016-01-22 13:42:31

标签: asp.net asp.net-mvc asp.net-mvc-4

我不确定这是否可以在代码中实现,或者是否需要在ISS中应用此规则。

基本上我有三个域:

domain1.co.uk > redirects to .com
domain1.com > Primary domain registered with SSL
domain1.ie > I want to redirect this to .com based on SSL request

我已将MVC应用配置为根据域显示相对内容。因此,如果请求来自.ie地址,那么我可以显示相关的内容/元数据等。但我的问题是,当我在HTTPS下访问/帐户/登录时,我得到一个SSL错误,因为证书是在。 com域。

我真的想保留HTTP静态网站的.ie绑定并在Google上对其进行索引,但只要用户尝试导航到HTTPS,我就会切换到.com域名。

我很感激我可以通过改变整个网站的链接来做到这一点,我也尝试了以下但无济于事:

protected void Application_BeginRequest()
{
    if(Context.Request.IsSecureConnection && Context.Request.Url.ToString().Contains("domain1.ie"))
        Response.Redirect(Context.Request.Url.ToString().Replace("domain1.ie", "domain1.com"));
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

问题是,即使重定向到位,浏览器也必须首先访问.ie域上的SSL站点,以便Web服务器可以发送重定向。因此,他们仍会收到无效的证书错误。

因此,此处最好的选择是更改网站中的链接,否则您必须获取.ie网站的SSL证书。

对于实际的重定向,这可以直接在IIS中处理,只在与主网站分开的.ie域上设置SSL绑定。将物理路径设置为空目录(它不会提供任何内容)。然后为所有具有301 permanent的请求设置http重定向。

IIS 7 redirect