2013-05-02 45 views
2

想象的情景,我有:最好的办法重定向错误的URL的

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但尝试几次后,我失去了文档...

任何人都可以点我朝着正确的方向,或有没有人有这个问题,并没有你们是如何解决的呢?


P.S.我也想过我可以在一个新的网站创建一个简单的处理程序,并在该网站绑定添加所有“坏”域名,并从那里重定向,使用也许简单的XML配置更容易更新...

回答

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>充当为了执行动作(例如重定向)而必须验证的标准。