如何在asp.net mvc 5中将任何带有连字符的url重定向到home url

时间:2016-08-24 05:43:37

标签: iis asp.net-mvc-5 web-config

我正在为我的一位客户创建一个新网站。他们的旧网站是使用wordpress开发的,因此它有100个破碎的网址,如下所示:

http://www.example.com/best-gym-in-town/
http://www.example.com/video-gallery/
http://www.example.com/fun-stuff/
http://www.example.com/are-you-a-diabetes-patient/
http://www.example.com/john-in-media/
http://www.example.com/photo-gallery/
http://www.example.com/nutrition-program-that-suits-your-lifestyl/
http://www.example.com/our-range-of-fitness-tests/
http://www.example.com/corporate-group-workshops/some-article/another-article

我正在asp.net mvc 5中开发新站点。我想在web.config中编写一个httpRedirect规则,可以将上述任何URL重定向到home或任何特定页面。

到目前为止,我正在考虑解决方案

<location path="about-me">
<system.webServer>
        <httpRedirect enabled="true" destination="/home"
         httpResponseStatus="Permanent" />
</system.webServer>
</location>

但是我必须在web.config中写出100个这样的条目。我正在寻找一个更好,更有效的替代方案

1 个答案:

答案 0 :(得分:0)

在Global.asax中,挂钩char方法并从那里重定向到主页

Application_BeginRequest

或者,您可以在Global.asax中挂钩Application_Error方法,然后从那里检测404

protected void Application_BeginRequest(object sender, EventArgs e)
{     
    try
    {
        if (HttpContext.Current.Request.Url.AbsolutePath.Contains("-")){
            HttpContext.Current.Response.RedirectPermanent("/");
        }
    }
    catch (ThreadAbortException){}
}