2011-01-24 2 views
1

У меня есть .Net MVC 1 сайт, который заменил наследие. У Google все еще есть стек старых URL-адресов в своем индексе, и мне нужно перенаправить их 301. Все старые URL-адреса являются .html или .php-страницами, у меня также есть таблица db для старых URL-адресов и их новый эквивалент. Я знаю, что мне нужно делать, я просто не знаю, как это сделать! Вот мои мысли301 перенаправление в ASP.NET MVC из известного URL-адреса

  1. где-то в global.asax поймать URL запрошено с использованием регулярного выражения
  2. сделать БД поиск, мы надеюсь найти новый URL
  3. если мы нашли новый URL, то 301 переадресовать его. если нет ни 301 на домашнюю страницу, ни бросок 404

Ive попытался взломать себя с небольшой удачей, плюс все примеры, которые я могу найти в Интернете, действительно не охватывают этот пример. очень хотелось бы сделать это с помощью кода вместо добавления около 80 маршрутов раздельные к global.asax

Любая помощь или ссылки высоко оценили

+0

У меня была такая же проблема с одним из моих сайтов. Я сделал это, поймав все .php и .html запросы в один RedirectController, используя 2 Routes. В контроллере перенаправления я сопоставил URL-адрес, получив старый запрошенный URL-адрес из базы данных и переадресовал 301 оттуда на новый. Но для вас может быть другим, если у ваших новых URL-адресов все еще есть расширения .php и .html. – reinder

ответ

0

Вы могли бы использовать Handlers. Если URL-адреса достаточно различны, вы можете написать довольно широкую запись в разделе urlMappings вашего web.config, а затем использовать обработчик для перенаправления трафика.

0

Я бы воспользовался ловушкой всего маршрута и, прежде чем возвращать 404, я бы ввел логику, чтобы проверить, нужно ли ей 301.

[UrlRoute(Name = "404", Path = "{*path}", Order = 100)] 
public ViewResult NotFound(string path) 
{ 

}