我可能忽略了一些非常簡單的東西,但我試圖將所有不良URL重定向到根據條件篩選URL的操作,然後將301重定向到合適的頁面或發出404頁面。將所有請求重定向到IIS6上的ASP.NET MVC
爲此我有一個這樣的路線在我的路由表的末尾:
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有關,但是在IIS6下沒有.mvc的URL不會被髮送用於ASP.NET MVC處理。
的我第一次嘗試這個我沒注意到,「確認文件是否存在」需要的是聽之任之。 – Pedro 2017-07-26 19:57:53