【发布时间】:2014-01-27 21:13:46
【问题描述】:
从另一个线程上的this answer,我创建了一个重定向控制器来将我的旧 aspx 文件路由到我的新 MVC 页面。
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");
}
但仍然没有运气。有什么想法吗?
编辑:重定向的原因是因为第 3 方网站链接到旧的 PDF 文件(它们曾经存在于网站根目录,现在它们位于 /Documents/。我想 301 重定向到正确的文件。
【问题讨论】:
-
这是因为 ASP.MVC 不理解带有句点的 URL。默认情况下,IIS 会控制这些请求并尝试查找实际文件。我不确定如何解决它。
标签: c# asp.net-mvc redirect asp.net-mvc-routing