Sur mon site, j'ai déplacé des images d'un dossier à un autre.
Maintenant, lorsque je reçois une demande d'anciennes images '/ old_folder/images/*', je souhaite effectuer une redirection permanente vers un nouveau dossier contenant ces images '/ new_folder/images/*'
Par exemple:
/old_folder/images/image1.png => /new_folder/images/image1.png
/old_folder/images/image2.jpg => /new_folder/images/image2.jpg
J'ai ajouté un contrôleur de redirection simple
public class RedirectController : Controller
{
public ActionResult Index(string path)
{
return RedirectPermanent(path);
}
}
Maintenant, je dois configurer le bon routage, mais je ne sais pas comment passer la partie path au paramètre path.
routes.MapRoute("ImagesFix", "/old_folder/images/{*pathInfo}", new { controller = "Redirect", action = "Index", path="/upload/images/????" });
Merci
Je ferais en sens inverse
routes.MapRoute("ImagesFix", "/old_folder/images/{path}", new { controller = "Redirect", action = "Index" });
et dans le contrôleur comme ça
public class RedirectController : Controller
{
public ActionResult Index(string path)
{
return RedirectPermanent("/upload/images/" + path);
}
}
commencez par télécharger et installer le paquet RouteMagic à partir de ce lien , puis redirigez votre ancienne adresse vers la nouvelle adresse
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 );
pour plus d'informations, veuillez consulter le lien suivant Redirection d'itinéraires pour conserver des URL persistantes
La réponse ci-dessus à l'aide de RouteMagic est une bonne idée, mais l'exemple de code est incorrect (il est inclus dans le message de Phil en tant que mauvais exemple).
A partir du site de démonstration 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" });
Si vous spécifiez deux itinéraires, vous allez créer un mappage supplémentaire qui capture les URL que vous ne souhaitez pas.