Я, вероятно, обозреваю что-то очень простое здесь, но я пытаюсь перенаправить все плохие URL-адреса на действие, которое фильтрует URL-адрес на основе условий, а затем либо 301 перенаправляет на подходящую страницу, либо выдает 404 страницы.Перенаправить все запросы в ASP.NET MVC на IIS6
Для этого у меня есть маршрут, как это в конце моего маршрута таблицы:
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 для маршрутизации.
Есть ли простое решение/я что-то пропускаю?
EDIT: Это связано с this question, однако под URL-адресами IIS6 без .mvc не отправляются для обработки ASP.NET MVC.
В первый раз я попробовал это я не заметил, что «Убедитесь, что файл существует» должен был быть снят. – Pedro 2017-07-26 19:57:53