2017-02-06 12 views
0

301リダイレクトする必要のある大きなグループのURLがあります。私は様々な301のための 'キャッチ'としていくつかのルートを設定しましたが、どういうわけかリダイレクトループを作成したようです。 MVCルート - パラメータの固定リストに基づくURL

は誰かの確認ができます - 以下は有効なURLであるとONLYはパイプで区切られたリストからなる にパラメータを強制するでしょう

routes.MapRoute("MyRouteName", // Route name 
    "first-folder/second-folder/{param1}", // URL with parameters 
    new 
    { 
     controller = "Redirect", 
     action = "MyRedirectHandler", 
     newRouteName = "mynewroute", 
     folder1= "foo", 
     folder2 = "bar", 
     set = "option1|option2|option3" 
    }); 
(値が一致しない場合、すなわち、ルートがキャッチしません)

ので、この場合:

mysite.com/first-folder/second-folder/option1 =>mysite.com/mynewroute/foo/bar

mysite.com/first-folder/second-folder/option2 =>mysite.com/mynewroute/foo/bar

mysite.com/first-folder/second-folder/option88 =>404

のparamsはURLのみをキャッチするために使用されている、私のMyRedirectHandlerは、私がnewRouteNameに指定したルートに301を行いますコントローラのアクションです。

答えて

1

OK、 私はあまりにも早く投稿しました。同様の問題が発生した人は、このループはRouteのparamのデフォルトとparamの制約の違いになります。上記の例は、次のとおりです。

routes.MapRoute("MyRouteName", // Route name 
    "first-folder/second-folder/{param1}", // URL with parameters 
new 
{ 
    controller = "Redirect", 
    action = "MyRedirectHandler", 
    newRouteName = "mynewroute", 
    folder1= "foo", 
    folder2 = "bar" 
}, //param defaults 
new { 
    set = "option1|option2|option3" 
} //param constraints 
); 
関連する問題