Assume my web form application is migrated to a MVC application. Legacy web form url is http://localhost/Details.aspx?id=100&t=77 which was using for display details.
New MVC url for the same page is http://localhost/Home/Details/
Controller=Home, Action=Details
Search engine crawlers update their search database with new urls corresponding to legacy urls only if legacy URLs return Response Status as "301 Moved Permanently" with new url location.
My application is hosted on microsoft Azure.
What is the best way to make sure old url wil get to the new mvc controllers and actions.
I tried this but it wont work :(
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;
}
}