У меня есть таблица с URL-перенаправлениями, и ранее я использовал HttpModule
подход для запроса БД и обработки перенаправлений, если таковые обнаружены.Однако теперь я хочу изменить эту функциональность в ActionFilter
по двум причинам:
HttpModule
обрабатывает все запросы, в то время как мне нужны перенаправления только для определенных типов контента.Во всех других случаях это приводит к бессмысленному запросу базы данных. - Мне нужна дополнительная функция - использовать 301 перенаправление на стороне клиента при определенных условиях и по умолчанию перенаправление на стороне сервера для остальных.
В настоящее время в моем HttpModule
я использую HttpContext.RewritePath
для реализации перенаправления на стороне сервера .У меня вопрос, как я могу достичь того же результата в ActionFilter
.
Чтобы уточнить перенаправление на стороне сервера : я хочу иметь доступ к одному и тому же контенту по двум различным ссылкам.Если courses/programming-basics/details
(словесный URL) перенаправлен на /course/{id}/details
(реальный путь действия), я хочу иметь возможность использовать словесный URL для доступа к этому контенту.
В настоящее время, используя ActionExecutingContext
Яиспользуя
filterContext.Result = new RedirectResult(url)
, что приводит к 301 на стороне клиента .
Уточнение : Я хочу, чтобы мой контент был доступен по старым URL-адресам.Следование приведенному выше примеру Это приводит к одной странице, которая представляет идентичный контент с двумя действительными URL: courses/programming-basics/details
и `course / {id} / details.Возможно, я неправильно использую перенаправления, но так мне удалось сформулировать вопрос.