2013-06-07 45 views
30

ASP.NET MVC 4アプリケーションのRouteConfig.csファイルへのルートを追加して、別のルートへの永続的な301リダイレクトを実行するにはどうすればよいですか?ASP.NET MVC 4 - 301 RouteConfig.csのリダイレクト

私は、同じコントローラのアクションを指す別のルートを希望します - これは301、特にSEOのベストプラクティスと思われますか?

ありがとうございました。あなたはRedirectPermanentを使用する必要が

+0

私はこの答えは、いくつかの価値があることができますねhttp://stackoverflow.com/a/7664217/1236044 [あなたが301 permanantリダイレクトルートをどのように行うのですが – jbl

+0

可能重複ASP.Net MVCで](http://stackoverflow.com/questions/2216890/how-do-you-do-a-301-permanant-redirect-route-in-asp-net-mvc) – JNF

答えて

45

は、ここでの例です:グローバルasaxで

public class RedirectController : Controller 
{ 

    public ActionResult News() 
    { 

     // your code 

     return RedirectPermanent("/News"); 
    } 
} 

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

ありがとう自動的に恒久的なリダイレクトですか?あなたはそれを一時的であるとどう思いますか? – niico

+0

ステータスコードとしてRedirectPermanent(url)301を追加すると、リダイレクト(URL)は単純なリダイレクト –

+0

ああ私はコントローラを作成する必要がありますか?私はこれをRouteConfig.csからすべて行うことはできませんか? (またはglobal.asax) – niico

25

私はまた、あなたが、具体的RouteConfigでこれを行う方法を尋ねたが、あなたがすることができます知っていますIIS Rewrite Rulesを使用して同じことを達成します。ルールはweb.configに保存されているため、ルールを作成するためにIISを使用する必要はなく、web.configに追加するだけで、すべての環境(Dev、Staging、Prod、など)、RouteConfigをきれいに保つことができます。 IISモジュールに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> 
+8

偉大な答えです! 'redirectType =" Permanent "を' action'タグの末尾に追加して、301リダイレクトであることを明らかにすることをお勧めします。 – Theophilus