web-dev-qa-db-fra.com

ASP.NET MVC 4 - 301 redirige dans RouteConfig.cs

Comment puis-je ajouter une route au fichier RouteConfig.cs dans une application ASP.NET MVC 4 pour effectuer une redirection 301 permanente vers une autre route?

J'aimerais que certaines routes différentes pointent vers la même action du contrôleur - il semble qu'un 301 serait la meilleure pratique pour cela, spécialement pour le référencement?

Merci.

33
niico

Vous devez utiliser RedirectPermanent, voici un exemple:

public class RedirectController : Controller
{

    public ActionResult News()
    {

        // your code

        return RedirectPermanent("/News");
    }
}

dans l'asax global:

    routes.MapRoute(
        name: "News old route",
        url: "web/news/Default.aspx",
        defaults: new { controller = "Redirect", action = "News" }
    );
50

Je sais que vous avez spécifiquement demandé comment procéder sur RouteConfig, mais vous pouvez également accomplir la même chose en utilisant IIS Rewrite Rules . Les règles vivent sur votre web.config, vous n'avez donc même pas besoin d'utiliser IIS pour créer les règles, vous pouvez simplement les ajouter au web.config et vous déplacer avec l'application à travers tous vos environnements (Dev, Staging, Prod, etc.) et gardez votre RouteConfig propre. Il nécessite que le module IIS soit installé sur IIS 7, mais je crois qu'il est préinstallé sur 7.5+.

Voici un exemple:

<?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>
25
Jonas Stawski