2013-06-07 7 views
30

Wie kann ich eine Route zur RouteConfig.cs-Datei in einer ASP.NET MVC 4-App hinzufügen, um eine permanente 301-Weiterleitung zu einer anderen Route durchzuführen?ASP.NET MVC 4 - 301 Redirects in RouteConfig.cs

Ich möchte bestimmte verschiedene Routen auf die gleiche Controller-Aktion zeigen - es scheint ein 301 wäre beste Praxis für diese, speziell für SEO?

Danke.

+0

ich diese Antwort erraten von einigem Wert http://stackoverflow.com/a/7664217/1236044 – jbl

+0

möglich Duplikat sein kann [Wie geht es Ihnen eine 301-Route permanant umleiten in ASP.Net MVC] (http://stackoverflow.com/questions/2216890/how-do-you-doa-a-301-permanant-redirect-route-in-asp-net-mvc) – JNF

Antwort

45

Sie haben RedirectPermanent zu verwenden, hier ist ein Beispiel:

public class RedirectController : Controller 
{ 

    public ActionResult News() 
    { 

     // your code 

     return RedirectPermanent("/News"); 
    } 
} 

im globalen asax:

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

danke - so das ist automatisch eine permanente Weiterleitung? Wie würdest du sagen, dass es vorübergehend ist? – niico

+0

RedirectPermanent (URL) 301 als Statuscode hinzufügen, Redirect (URL) ist eine einfache Umleitung –

+0

ahh also muss ich einen Controller erstellen? Ich kann das alles nicht von der RouteConfig.cs aus tun? (oder global.asax) – niico

25

Ich weiß, Sie ausdrücklich gefragt, wie diese auf dem RouteConfig zu tun, aber Sie können auch erreichen Sie das gleiche mit IIS Rewrite Rules. Die Regeln werden in Ihrer web.config gespeichert. Sie müssen nicht einmal IIS verwenden, um die Regeln zu erstellen. Sie können sie einfach zur web.config hinzufügen und werden mit der App durch all Ihre Umgebungen (Dev, Staging, Prod, usw.) und halten Sie Ihre RouteConfig sauber. Es erfordert, dass das IIS-Modul auf IIS 7 installiert wird, aber ich glaube, dass es auf 7.5+ vorinstalliert ist.

Hier ist ein Beispiel:

<?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> 
+8

Große Antwort! Ich empfehle, 'redirectType =" Permanent "' am Ende des 'action'-Tags hinzuzufügen, um deutlich zu machen, dass es sich um eine 301-Weiterleitung handelt. – Theophilus