重定向错误网址的最佳方法

时间:2013-05-02 20:41:00

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

想象一下这个场景,我有:

wellspell.com

以及

wellspeel.com
weelspell.com
weelspeel.com

我希望我的MVC应用程序只能使用正确的域名。

我目前的问题在于当前DNS控制面板下 CNAME 缺乏支持,因为我可以轻松添加*.wellspeel.comwww.wellspeel.com,但从不wellspeel.com (仅作为ANAME)。

最简单的配置是什么,因此我可以将http://wellspeel.com重定向到http://wellspell.com

我现在拥有的是在我的第一个控制器中,使用requestContext.HttpContext.Request.Url.Host进行简单检查,然后过滤并重定向用户

requestContext.HttpContext.Response.RedirectPermanent("http://wellspell.com");

但这已经在控制器初始化中...我可以在到达控制器之前进行重定向吗?

我正在查看有关UrlRoutingModule的文档,但经过几次尝试后我迷路了......

任何人都可以指出正确的方向,或者有没有人有问题,你们是怎么解决的?


PS 我还以为我可以在一个新网站中创建一个简单的Handler,在那个网站绑定中添加所有“坏”域并从那里重定向,使用简单的XML配置可以更容易更新......

1 个答案:

答案 0 :(得分:1)

如果您运行的是IIS 7或更高版本,则可以确保HTTP Redirect并跳过必须站起来的任何代码。

编辑:出于某种原因,我假设您为每个可能的域站起来访问IIS网站。如果您只是为每个可能的域设置一个IIS站点并包含多个绑定,那么您可能希望查看使用IIS URL Rewrite规则(这仍然可以让您跳过必须配置任何代码,因为规则将是在MVC管道之前执行。)

具体来说,我认为您会对HTTP_HOST条件输入感兴趣。

这是一个(未经测试的)示例:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="SpellingErrorOne" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^weelspeel.com" />
                </conditions>
                <action type="Redirect" url="http://wellspell.com" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

您只需要为要处理的每个域添加规则。 <condition>充当必须验证的条件,以便执行操作(例如重定向)。