Позвольте мне объяснить. Недавно я перенес классическое приложение asp в .net MVC4. Старый сайт состоял из множества html и aspx страниц, то есть:
естественно, к старому сайту asp обращались URL-адреса, такие как www.library.com / index.html, www.library.com/book.html, www.library.com/contactus.aspx, и т.д.
Теперь к текущему сайту MVC обращаются через маршрутизаторы, то есть www.library.com / Home, www.library.com/Book, www.library.com/Contact.
Многие клиенты компании пытаются получить доступ к новому сайту, используя старые URL, это проблема, мне нужно найти решение из кода.
Я пробую некоторые решения, но не работаю.
Solution One
Для старой страницы aspxs можно создать страницы aspx в новом корне сайта с тем же именем, что и у старого сайта, и перенаправить на Page_Load из codebehind
//Create contactus.aspx on root directory project and redirect
public partial class Contact : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.RedirectToRoute(new { controller = "Contact", action = "Index" });
}
}
Для html-страницы вы можете определить простое обновление метатега
//Create a html page, i.e., index.html
<meta http-equiv="refresh" content="0; url=http://library.com/Home" />
<p><a href="http://example.com/">Redirect</a></p>
Это не жизнеспособное решение, необходимо создать html-страницу или страницу aspx для каждого необходимого перенаправления.
Раствор 2
Я пытаюсь определить условие перенаправления в Global.asax, но не работает
protected void Application_BeginRequest(object sender, EventArgs e )
{
string url = Request.Url.ToString().ToLower();
if (url.Contains("index.html"))
Context.Response.RedirectPermanent("/Home");
else if (url.Contains("book.html"))
Context.Response.RedirectPermanent("/Book");
else if (url.Contains("contactus.aspx"))
Context.Response.RedirectPermanent("/Contact");
}
Решение 3
Я попытался определить карты для перенаправления на RouteConfig.cs, но тоже не работает
//Trying redirect on RegisterRoutes() in RouteConfig.cs
routes.MapRoute(
name: "Home",
url: "index.html",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Book",
url: "book.html",
defaults: new { controller = "Book", action = "Index" }
);
routes.MapRoute(
name: "Contact",
url: "contactus.aspx",
defaults: new { controller = "Contact", action = "Index" }
);
Как перенаправить на новые маршруты mvc, когда пользователь пытается правильно получить доступ к старому URL-адресу сайта asp? Нужно найти быстрое и экономичное решение, спасибо за помощь.