從另一個線程this answer,我創建了一個重定向控制器來將我的舊aspx文件路由到我的新MVC頁面。C#.NET 301重定向到文件,而不是控制器
RouteConfig.cs:
routes.MapRoute(
name: "About",
url: "aboutus.aspx",
defaults: new { controller = "Redirect", action = "About" }
);
RedirectController.cs:
public ActionResult About()
{
return RedirectPermanent("/Home/About");
}
這完美的作品,因爲我有一個/Views/Home/About.cshtml
視圖。但是,如果我嘗試重定向,說.PDF文件,它不工作...
RouteConfig.cs:
routes.MapRoute(
name: "MyPDF",
url: "somefile.pdf",
defaults: new { controller = "Redirect", action = "MyPDF" }
);
RedirectController.cs:
public ActionResult MyPDF()
{
return RedirectPermanent("/Documents/somefile.pdf");
}
這轉到標準的404找不到頁面。我也試過,沒有運氣的絕對路徑:
RedirectController.cs:
public ActionResult MyPDF()
{
return RedirectPermanent("http://mydomain.com/Documents/somefile.pdf");
}
但仍沒有運氣。有任何想法嗎?
編輯:重定向的原因是因爲第三方網站鏈接到舊的PDF文件(他們曾經存在網站的根目錄,現在他們在/Documents/
。我想301重定向到正確的文件??
這是因爲ASP.MVC不理解帶有句點的URL。默認情況下,IIS獲取這些請求的控制權並嘗試查找實際文件。我不知道如何解決它。 –