Asp.net mvc 301从已知URL在ASP.NET MVC中重定向&x27;s

Asp.net mvc 301从已知URL在ASP.NET MVC中重定向&x27;s,asp.net-mvc,http-status-code-301,global-asax,Asp.net Mvc,Http Status Code 301,Global Asax,我有一个.NETMVC1站点,它取代了一个遗留站点。谷歌的索引中仍然有一堆旧的URL,我需要对它们进行301重定向。所有旧URL都是.html或.php页面,我还有一个用于旧URL及其新等价物的db表。我知道我需要做什么,我只是不知道怎么做!这是我的想法 在global.asax中的某个位置,使用regexp捕获请求的url 进行数据库查找以找到新的url 如果我们找到了新的url,然后301重定向它。如果不是的话,要么301转到主页,要么抛出404 我试着在自己周围黑客几乎没有运气,加上我能在

我有一个.NETMVC1站点,它取代了一个遗留站点。谷歌的索引中仍然有一堆旧的URL,我需要对它们进行301重定向。所有旧URL都是.html或.php页面,我还有一个用于旧URL及其新等价物的db表。我知道我需要做什么,我只是不知道怎么做!这是我的想法

  • 在global.asax中的某个位置,使用regexp捕获请求的url
  • 进行数据库查找以找到新的url
  • 如果我们找到了新的url,然后301重定向它。如果不是的话,要么301转到主页,要么抛出404
  • 我试着在自己周围黑客几乎没有运气,加上我能在网上找到的所有例子都没有真正涵盖这个例子。我真的希望通过代码来实现这一点,而不是向global.asax添加大约80条单独的路由


    非常感谢您提供的任何帮助或链接

    。如果URL足够清晰,您可以在web.config的urlMappings部分中写入一个相当广泛的条目,然后使用处理程序重新路由流量。

    我会使用catch all路由,在返回404之前,我会插入逻辑以检查是否需要301

    [UrlRoute(Name = "404", Path = "{*path}", Order = 100)]
    public ViewResult NotFound(string path) 
    {
    
    }
    

    我的一个网站也有同样的问题。我通过使用两条路由将所有的.php和.html请求捕获到一个重定向控制器中。在重定向控制器中,我通过从数据库中获取旧的请求URL来匹配URL,并从那里执行301重定向到新的URL。但是,如果新URL的扩展名仍然是.php和.html,则可能会有所不同