web-dev-qa-db-ja.com

ASP.NET MVCMapRouteでリダイレクトする

私のサイトでは、いくつかの画像をあるフォルダから別のフォルダに移動しました。

これで、古い画像のリクエストを受け取ったときに '/ old_folder/images/*'これらの画像を含む新しいフォルダに永続的にリダイレクトしたい '/ new_folder/images/*'

例えば:

/old_folder/images/image1.png => /new_folder/images/image1.png

/old_folder/images/image2.jpg => /new_folder/images/image2.jpg

簡単なリダイレクトコントローラーを追加しました

public class RedirectController : Controller
{
    public ActionResult Index(string path)
    {
        return RedirectPermanent(path);
    }
}

次に、適切なルーティングを設定する必要がありますが、パス部分をパスパラメータに渡す方法がわかりません。

routes.MapRoute("ImagesFix", "/old_folder/images/{*pathInfo}", new { controller = "Redirect", action = "Index", path="/upload/images/????" }); 

ありがとう

10
Khachatur

私は次の方法でやります

routes.MapRoute("ImagesFix", "/old_folder/images/{path}", new { controller = "Redirect", action = "Index" }); 

そしてそのようなコントローラーで

public class RedirectController : Controller
{
    public ActionResult Index(string path)
    {
        return RedirectPermanent("/upload/images/" + path);
    }
}
25

最初にRouteMagicパッケージを このリンク からダウンロードしてインストールし、次に古いアドレスを新しいアドレスにリダイレクトします。次のコードのように:

var NewPath = routes.MapRoute("new", "new_folder/images/{controller}/{action}");
var OldPath = routes.MapRoute("new", "old_folder/images/{controller}/{action}");
routes.Redirect(OldPath ).To(NewPath );

詳細については、次のリンクを確認してください 永続的なURLを維持するためのルートのリダイレクト

7
J_hajian_nzd

上記のRouteMagicを使用した回答は良い考えですが、サンプルコードは間違っています(Philの投稿にbadの例として含まれています)。

RouteMagic Githubデモサイトから global.asax.cs

// Redirect From Old Route to New route
var targetRoute = routes.Map("target", "yo/{id}/{action}", new { controller = "Home" });
routes.Redirect(r => r.MapRoute("legacy", "foo/{id}/baz/{action}")).To(targetRoute, new { id = "123", action = "index" });

2つのルートを指定すると、不要なURLをキャッチする追加のマッピングを設定することになります。

1
Matt Kemp