【问题标题】:301 redirect in ASP.NET MVC from known URL's在 ASP.NET MVC 中从已知 URL 重定向 301
【发布时间】:2011-01-24 20:56:23
【问题描述】:

我有一个取代旧版的 .Net MVC 1 网站。谷歌的索引中仍然有一堆旧 URL,我需要 301 重定向它们。所有旧 URL 都是 .html 或 .php 页面,我还有一个旧 url 及其新等价物的 db 表。我知道我需要做什么,我只是不确定如何去做!这是我的想法

  1. 在 global.asax 的某处捕获使用正则表达式请求的 url
  2. 做一个数据库查找,希望能找到新的 url
  3. 如果我们找到了新的 url 然后 301 重定向它。如果不是 301 到主页或抛出 404

我尝试在自己周围进行黑客攻击,但运气不佳,而且我可以在网上找到的所有示例都没有真正涵盖这个示例。真的很想通过代码来做到这一点,而不是向 global.asax 添加大约 80 条单独的路由

非常感谢任何帮助或链接

【问题讨论】:

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

标签: asp.net-mvc http-status-code-301 global-asax


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 2011-05-27
      • 2011-01-11
      • 1970-01-01
      • 2013-06-03
      • 2011-05-23
      • 2016-05-11
      • 2010-12-11
      相关资源
      最近更新 更多