想象一下这个场景,我有:
wellspell.com
以及
wellspeel.com
weelspell.com
weelspeel.com
我希望我的MVC应用程序只能使用正确的域名。
我目前的问题在于当前DNS控制面板下 CNAME 缺乏支持,因为我可以轻松添加*.wellspeel.com
和www.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配置可以更容易更新......
答案 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>
充当必须验证的条件,以便执行操作(例如重定向)。