34

如何将路由添加到 ASP.NET MVC 4 应用程序中的 RouteConfig.cs 文件以执行永久 301 重定向到另一个路由?

我希望某些不同的路线指向同一个控制器操作 - 似乎 301 是最好的做法,特别是对于 SEO?

谢谢。

4

2 回答 2

51

您必须使用 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" }
    );
于 2013-06-07T09:24:51.507 回答
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>
于 2013-08-17T20:14:28.637 回答