MVC 路由 - 将特定 URI 重新路由到另一个 URI

MVC Routing - Reroute Specific URI to Another URI

我们有一些链接显示在 Google 具有 incorrect/old 格式的地方。这些正在 Google Places 端修复。在这些更改传播之前,我会尝试对其进行创可贴并将损坏的 URI 重定向到良好的 URI。

我需要重新路由两个 URI: 1. http://www.BusinessName/Locations/Location?name=Vegas and 2. http://www.BusinessName/Locations/Vegas 并将它们发送到单个有效的 URI, http://www.BusinessName/Locations/Location?name=拉斯维加斯维加斯(注意名称不同)

在 ASP 的日子里,我会做一个 response.redirect,但我知道这在 MVC 中是不行的。

我的 RouteConfig.cs 默认路由低于标准。 {name} 参数是位置。

routes.MapRoute(
            "LocationDetail",
            "Locations/{name}",
            new { controller = "Location", action = "Location" });

LocationController 还将处理格式,http://www.BusinessName/Locations/Location?name=Vegas

我完全明白如何将路由格式更改为不同的顺序,例如 {controller}、{id}、{action} 并且我已经构建了一些路由来访问一些静态内容,但我什么都没有已经尝试过简单地将“http://www.BusinessName/Locations/Location?name=Vegas”重新路由到“http://www.BusinessName/Locations/Location?name=LasVegas”

处理此问题的最佳方法是在 IIS 级别。如果您还没有 URL Rewrite Module,请安装它,然后您可以设置从这两个 URL 到正确的 URL 的永久重定向。然后,IIS 会自动重定向,您的应用程序无需参与或关心。

我相信您正在寻找的是 Return RedirectToAction(...) 在您的控制器中。