【发布时间】:2010-09-18 01:42:33
【问题描述】:
我可能在这里忽略了一些非常简单的事情,但我正在尝试将所有错误的 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 时,不包含 .mvc(例如 oldfile.php)的 URL 永远不会发送到 ASP.NET 进程进行路由。
有没有简单的解决方案/我忽略了什么?
编辑: 这与this question 相关,但是在没有 .mvc 的 IIS6 下,不会发送用于 ASP.NET MVC 处理的 URL。
【问题讨论】:
标签: asp.net-mvc redirect iis-6 http-status-code-404