2016-05-25 1 views
1

私は自分のURLをSEOにしたいと思っています。 私は記事やこのテーマに関する他の記事をたくさん見てきましたが、それらのすべては、のようなURLで終わる:私のようなURLで終わるたい/Products/34/my-handbagMVC 5、真のSEOフレンドリールート

/gucci/my-handbag

私はすでに実際にコントロールを持っています"gucci"と "my-handbag"という名前から製品を入手するには、私のルーティングがProductsコントローラに送信されるだけです。

これは私が今で働いているものです:

routes.MapRoute(
    name: "ProductDetails", 
    url: "{brand}/{title}", 
    defaults: new { controller = "ProductViews", action = "Details", brand = "", title = "" } 

任意の提案ですか?

+0

最も柔軟なアプローチについては、[この回答](http://stackoverflow.com/questions/31934144/multiple-levels-in-mvc-custom-routing/31958586#31958586)を参照してください。 – NightOwl888

答えて

2

あなたは正しい道を歩いています。次のような方法で、 www.domain.com/gucci/some-gucci-product-nameのようなURLを生成できます。

routes.MapRoute(
"Default", // Route name 
"{Brand}/{Details}", // URL with parameters 
new { controller = "ProductViews", action = "Details", Brand = UrlParameter.Optional, Details = UrlParameter.Optional }// Parameter defaults 
); 

タイトルを処理して、ユニークであればdbで商品を検索できます。あなたのようなURLの最後にいくつかの一意の番号を追加する必要がある場合; www.domain.com/gucci/some-gucci-product-name-13456

routes.MapRoute(
"Default", // Route name 
"{Brand}/{Details}-{id}", // URL with parameters 
new { controller = "ProductViews", action = "Details", Brand = UrlParameter.Optional, Details = UrlParameter.Optional, id=UrlParameter.Optional }// Parameter defaults 
); 

はそれがお役に立てば幸いです。

+0

こんにちは、あなたの提案に感謝します。それだけでは機能しません、私はまだ "リソースが見つかりません"を取得します。 –

+0

使用したルートとルート定義を処理するはずのコントローラアクションのシグネチャを送信できますか? – ali

+0

routes.MapRoute( "デフォルト"、//ルート名 "{Brand}/{Details}"、//パラメータ付きURL new {controller = "ProductViews"、action = "Details"、Brand = UrlParameter.Optional 、Details = UrlParameter.Optional} //パラメータの既定値は です。 –