#c# #asp.net-mvc-3 #url-rewriting
#c# #asp.net-mvc-3 #url-переписывание
Вопрос:
Я хочу перенаправлять каждый вызов на веб-сайте, созданном для www.domain.com/sitemap.xml на действие контроллера. Как я могу этого добиться?
Пока у меня есть это, но возвращаемый код состояния равен 302. Я хочу вернуть статус 200 с его помощью, но все равно перенаправлять / перезаписывать действие контроллера. Причина, по которой я спрашиваю, заключается в том, что я хочу, чтобы каждый вызов для указанного URL перенаправлялся на controlleraction. Контроллер выполняет некоторые действия и генерирует XML-карту сайта. Затем необходимо вернуть выходные данные этого controlleraction.
protected void Application_BeginRequest()
{
//Check if an call for the sitemap.xml has been made
if (Request.Path == "/sitemap.xml")
{
Response.RedirectToRoute("XmlSitemap");
}
}
Ответ №1:
Для достижения этой цели вы можете использовать функцию маршрутизации MVC:
routes.MapRoute(
"Sitemap",
"sitemap.xml",
new { controller = "Home", action = "Sitemap" }
);
После размещения этого в вашем глобальном файле.asax все запросы к domain.com/sitemap.xml будет перенаправлено на действие Sitemap домашнего контроллера.
Комментарии:
1. Глупый я, маршрутизация уже может перехватить URL и перенаправить его на нужный контроллер. Таким образом создавал ненужные трудности для себя. Спасибо!
2. Случается со всеми в той или иной форме. 🙂
3. Но во второй раз, сгенерированный sitemap.xml. Как я могу принудительно воссоздать новую карту сайта?