Я, вероятно, упускаю из виду кое-что действительно простое здесь, но я пытаюсь перенаправить все плохие URL-адреса на действие, которое фильтрует URL-адрес на основе условий, а затем либо 301 перенаправляет на подходящую страницу, либо выдает страницу 404.
Для этого в конце таблицы маршрутов у меня есть такой маршрут:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
И такое действие:
public ActionResult Error(string url)
{
if (/* Conditions are met... */)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", /* Destination URL */);
Response.End();
}
Response.StatusCode = 404;
return View(/* 404 page... */));
}
Локально работает.
Однако при развертывании в IIS6 URL-адреса, которые не включают .mvc (например, oldfile.php), никогда не отправляются процессу ASP.NET для маршрутизации.
Есть ли простое решение / я что-то упускаю?
РЕДАКТИРОВАТЬ:
Это связано с этим вопросом , однако в IIS6 URL-адреса без .mvc не отправляются для обработки ASP.NET MVC.