2016-03-31 115 views
1

我必須將舊網址(從傳統的Asp網站)重定向到使用ASP .NET MVC生成的新網址。例如:ASP .NET MVC 5傳統網址

localhost/news.asplocalhost/News

我加數以下規則:

routes.MapRoute(
      "legacyUrl1", 
      "{controller}.asp/{action}/{id}", 
      new { controller = "News", action = "RedirectLegacyURL", id = UrlParameter.Optional } 
     ); 

//in news controller 
public void RedirectLegacyURL(string id) 
    { 
     Response.Status = "301 Moved Permanently"; 
     Response.AddHeader("Location", "news/"); 
     Response.End(); 
    } 

但規則 「它用」 如下:

routes.MapRoute(
      "Normal", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

這怎麼可能?當我必須使用查詢字符串重定向傳統網址時,此事會引發問題。

+1

FWIW,最好通過IIS來處理這個問題,因爲在某些傳統應用是怎麼回事是不是你的應用的領域。它應該只關心它需要什麼,而不是一些傳統的應用程序。在IIS中使用URL重寫模塊。 –

回答

1
routes.Redirect(r => r.MapRoute("", "news.asp")).To(routes.Map("", "Home/Index", new { controller = "Home", action = "Index" })); 

這是我重定向我的舊的.asp路線

+5

你忘了指定這個'Redirect'擴展方法是Phil Haack很久以前開發的RouteMagic庫的一部分。 https://github.com/haacked/routemagic爲了使用它,OP必須安裝以下nuget包:https://www.nuget.org/packages/RouteMagic.Mvc/ –

+0

謝謝@AlexArt。 – sjr59