基于SSL MVC切换域

时间:2016-01-22 11:58:23

标签: c# 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"));
    }

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

要允许IIS网络服务器响应不同域的SSL请求,您需要在服务器上启用server name indicator,以允许您使用两个不同的证书来提供SSL内容。

答案 1 :(得分:0)

您可以使用URL Rewriter

类似的东西:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Redirect stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{HTTPS}" pattern="ON" />
                </conditions>
                <action type="Redirect" url="https://domain1.com/{R:0}" redirectType="Permanent" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

使用您的共享代码库,您可能希望调整匹配规则,以便仅针对IE启动。

但您需要将服务器配置为在两个站点上使用SSL,方法是使用SAN Certificate或将多个IP绑定到盒子的nic以处理多个https请求。