Предположим, что мое приложение для веб-форм перенесено в приложение MVC. Унаследованный URL-адрес веб-формы - http://localhost/Details.aspx?id=100&t=77, который использовался для отображения деталей.Map legecy url to MVC Controller and action
Нового MVC URL для одной и той же страницы http://localhost/Home/Details/
Controller = Home, Action = Подробности
Поисковой система Искатели обновить свою базу данных поиска с новым URLs, соответствующим унаследованных URLs только если устаревшие адреса возвратом статуса ответа, как «301 перемещен навсегда» с новым местоположением URL.
Мое приложение размещено на microsoft Azure.
Каков наилучший способ убедиться, что старый url получит доступ к новым контроллерам и действиям mvc.
Я попробовал это, но это не будет работать :(
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.Add(new LegacyUrlRoute());
}
}
public class LegacyUrlRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
const string status = "301 Moved Permanently";
var request = httpContext.Request;
var response = httpContext.Response;
var legacyUrl = request.Url.ToString();
var newUrl = "";
var id = request.QueryString[0];
var t = request.QueryString[1];
if (legacyUrl.Contains(".aspx"))
{
newUrl = $"Home/Details?id={id}&t={t}";
response.Status = status;
response.RedirectLocation = newUrl;
response.End();
}
return null;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext,
RouteValueDictionary values)
{
return null;
}
}
Wow thats awesome !! Большое вам спасибо. Вы действительно спасли мой день :) –