如何使用 MVC 路由将 URL 从旧 WebForms 站点重定向到新 MVC5 站点上的子域
How to redirect URL from old WebForms site to subdomain on new MVC5 site using MVC routing
我们正在将我们当前的网站从 WebForms 迁移和更新到 MVC5。当前站点的一部分将分离并暂时作为独立站点保留在 WebForms 上 运行,并且在新情况下可以在其自己的子域上访问。
在目前的情况下,我们有一堆 URL 看起来像这样:
www.site.com/foo/[..]/bar.aspx
在新的情况下,我们希望将这些 URL 重定向到如下内容:
www2.site.com/foo/[..]/bar.aspx
我正在考虑在 MVC5 中使用 Route
来捕获所有以 foo
开头的传入请求并将其路由到 Redirect
控制器。像这样:
routes.MapRoute(name: "RedirectFooBar", url: "foo(/.*)", defaults: new { controller = "Redirect", action = "FooBar" });
public ActionResult FooBar()
{
return RedirectPermanent(Request.RawUrl.Replace("//www.", "//www2."));
}
不幸的是,由于 url 中的正则表达式,我的路由不是这样工作的。我想知道是否有可能实现我正在尝试使用 MVC 路由所做的事情,如果可能的话,我应该进行哪些更改才能使其正常工作?
或者也许有更好的方法来实现这种事情?
谢谢!
你的想法是正确的,但是你使用了错误的语法。你应该这样定义你的路线:
routes.MapRoute(name: "RedirectFooBar", url: "foo/{*path}", defaults: new { controller = "Redirect", action = "FooBar" });
{*path}
将捕获从这一点到 url 结束的所有内容。然后您可以将其用作操作中的参数:
public ActionResult FooBar(string path)
{
return RedirectPermanent("http://www2.site.com/foo/" + path);
}
我们正在将我们当前的网站从 WebForms 迁移和更新到 MVC5。当前站点的一部分将分离并暂时作为独立站点保留在 WebForms 上 运行,并且在新情况下可以在其自己的子域上访问。
在目前的情况下,我们有一堆 URL 看起来像这样:
www.site.com/foo/[..]/bar.aspx
在新的情况下,我们希望将这些 URL 重定向到如下内容:
www2.site.com/foo/[..]/bar.aspx
我正在考虑在 MVC5 中使用 Route
来捕获所有以 foo
开头的传入请求并将其路由到 Redirect
控制器。像这样:
routes.MapRoute(name: "RedirectFooBar", url: "foo(/.*)", defaults: new { controller = "Redirect", action = "FooBar" });
public ActionResult FooBar()
{
return RedirectPermanent(Request.RawUrl.Replace("//www.", "//www2."));
}
不幸的是,由于 url 中的正则表达式,我的路由不是这样工作的。我想知道是否有可能实现我正在尝试使用 MVC 路由所做的事情,如果可能的话,我应该进行哪些更改才能使其正常工作?
或者也许有更好的方法来实现这种事情?
谢谢!
你的想法是正确的,但是你使用了错误的语法。你应该这样定义你的路线:
routes.MapRoute(name: "RedirectFooBar", url: "foo/{*path}", defaults: new { controller = "Redirect", action = "FooBar" });
{*path}
将捕获从这一点到 url 结束的所有内容。然后您可以将其用作操作中的参数:
public ActionResult FooBar(string path)
{
return RedirectPermanent("http://www2.site.com/foo/" + path);
}