Сохранение старых URL после обновления веб-сайта ASP.NET - PullRequest
1 голос
/ 07 марта 2011

Существует веб-сайт ASP.NET 2.0, который я собираюсь перенести на новый веб-фреймворк на основе ASP.NET 4.0. Хотя я знаю, что это включает в себя ручную подготовку скрипта / программы для преобразования содержимого сайта из схемы базы данных старого приложения в новую, меня больше беспокоит сохранение старых форматов URL; сопоставляя их с форматом URL нового веб-движка.

Я еще не решил, какой движок CMS является наиболее подходящим для перехода (таким образом, веб-формы или MVC все еще не ясны). Тем не менее, я хотел бы использовать опыт каждого на

  • общие проблемы, на которые нужно обратить внимание (независимо от платформы веб-приложения)
  • подходящие стратегии / методы для обработки переназначения URL в ASP.NET

Google Analytics уже настроен для веб-сайта, поэтому существует история наиболее запрашиваемых ссылок для изучения - которые являются наиболее важными форматами URL для переотображения и которые не стоит сохранять.

Из-за рабочих областей, на которые меня перенаправили в последние несколько лет, я не смог идти в ногу с последними возможностями ASP.NET, которые могут помочь с этим. Как ни странно, я нахожу мало материалов, обсуждающих, как правильно сохранить старые URL; большинство веб-сайтов довольно неприятны, полностью отказываясь от своих старых ссылок, когда они выполняют капитальный ремонт.

Моя первая мысль о самой простой технике - просто указать в web.config пользовательскую страницу aspx 404, которая будет читать старый запрошенный URL (который будет содержать исходный идентификатор содержимого). На основе идентификатора содержимого найдите пользовательскую таблицу базы данных, чтобы найти новый идентификатор содержимого, и перенаправьте с новым URL.

На данный момент я не уверен, захочу ли я использовать перезапись URL-адреса HttpModule или расширения, потому что я хочу выполнять поиск только тогда, когда он становится 404, а не проверять каждый запрос , Зная, что старые URL-запросы со временем исчезнут.

Какие еще факторы / аспекты я должен учитывать?

1 Ответ

1 голос
/ 07 марта 2011

Для производительности SEO не очень хорошая идея выпускать 404 или 302, если вы хотите поддерживать хорошее значение ссылки для каждой страницы, вы должны выпустить 301, постоянный редирект, который поисковые системы будут использовать для прохождения любого количества ссылок.на новый URL.

С помощью MVC вы можете зарегистрировать свои старые URL-адреса для маршрута, который использует некоторую форму выделенного RedirectController, например:

public class RedirectController : Controller
{
  public ActionResult RedirectArticle(int articleId)
  {
    string newUrl = // do something to figure out the new url, e.g. http://localhost/article/1 -> http://localhost/1/my-custom-article-url

    return RedirectPermanent(newUrl);
  }
}

Таким образом, вы можете зарегистрировать маршруты для поддержки обоихстарая инфраструктура и новая, с RedirectController выдачей соответствующего перенаправления 301 для конкретной страницы на новую страницу.

routes.MapRoute(
  "NewArticleUrl",
  "/{articleId}/{articleTitle}",
  new { controller = "Article", action = "Display");

routes.MapRoute(
  "OldArticleUrl",
  "/article/{articleId}.aspx",
  new { controller = "Redirect", action = "RedirectArtciel" });
...