2016-04-13 14 views
0

私はC#でAsp.net MVC 5を使用しています。Asp.net MVCのデフォルトルートを無効にする

プロジェクトのデフォルトルーティングを無効にしたいとします。私の地図ルートは次のようなものです。

routes.MapRoute(name: "News", 
        url: "haberler", 
        defaults: new { controller = "News", action = "Index"}); 


     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

ユーザーが自分のウェブサイトのニュースページにアクセスすると、そのようになります。

www.domain.com/haberler 

また、ユーザーは以下のようにニュースページにアクセスできます。

私はその "/news"やSEOフレンドリーなURLへの直接等を除去したい
www.domain.com/news 

。 "/ haberler"

デフォルトルーティング(Controller-Name-Convension)のルーティングを無効にするにはどうすればよいですか?

+0

デフォルトの処理を削除するには、 'Default'という名前の' MapRoute'を削除するだけです。 –

+0

無効にするのは良い考えではないと思います。代わりに、必要に応じてカスタムルートを作成します。 –

+0

誰かが礼儀正しくて、私の質問にマイナスを与える理由を教えてもらえますか?シンプルでクリーンで、SEOの最適化を行う必要があります。たぶん私はリダイレクトルールをowinの起動でコーディングします。しかし、私はそれを行うより良い方法を探しています。 –

答えて

0

MVCでは、特定のControllerの特定のActionにURLをマップするのが一般的です。デフォルトの規則を無効にするには、デフォルトルートを削除します。

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
0

代わりに「デフォルト」のルートを削除し、あなたがそれにコントローラの制約を追加することができます

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    constraints: new { controller = @"(Account|Manage|Home)" }     
); 

このように、/newsは404が見つかりませんでしたが返されます。

0

www.domain.com/newsはいずれのルートでも一致しないため、エラーが発生します。

0

は、この意志はあなたを助け、この

RouteTable.Routes.Remove(RouteTable.Routes["NAME ROUTE YOU WISH TO RMOVE"]); 

希望して削除してください。

関連する問題