如何在ASP.NET MVC 4应用程序中添加路由到RouteConfig.cs文件以执行永久301重定向到另一个路由?
我希望某些不同的路线指向相同的控制器动作 - 看起来301是最佳实践,特别是对于SEO?
感谢。
答案 0 :(得分:49)
你必须使用RedirectPermanent,这是一个例子:
public class RedirectController : Controller
{
public ActionResult News()
{
// your code
return RedirectPermanent("/News");
}
}
在全球的asax中:
routes.MapRoute(
name: "News old route",
url: "web/news/Default.aspx",
defaults: new { controller = "Redirect", action = "News" }
);
答案 1 :(得分:25)
我知道您在RouteConfig上明确询问了如何执行此操作,但您也可以使用IIS Rewrite Rules完成相同操作。这些规则存在于您的web.config中,因此您甚至不需要使用IIS来创建规则,您只需将它们添加到web.config中,然后随应用程序一起移动到所有环境中(Dev,Staging,Prod,等)并保持您的RouteConfig干净。它确实需要在IIS 7上安装IIS模块,但我相信它预装在7.5 +上。
以下是一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect t and c" stopProcessing="true">
<match url="^terms_conditions$" />
<action type="Redirect" url="/TermsAndConditions" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>