【问题标题】:Mapping routes for urls with .asp extension为带有 .asp 扩展名的 url 映射路由
【发布时间】:2013-02-06 14:47:28
【问题描述】:

我正在尝试创建一个旧路由以将旧的 asp 链接重定向到新的 url。

我的路线如下,它是列表中的第一条路线:

routes.MapRoute(
    "", // Route name
    "{*path}", // URL with parameters
    new { controller = "Legacey", action = "Legacey" },
    new { path = @".*\.asp.*" });// Parameter defaults

我遇到的问题是 IIS 在它们到达我的路由之前拦截了这些和 404。 我猜 web.config 中有一个设置告诉 IIS 停止这样做,但我找不到它。

【问题讨论】:

  • asp文件物理存在吗?如果没有,它们将被 StaticFileHandler 拾取,这将返回 404

标签: asp.net-mvc iis asp.net-mvc-routing


【解决方案1】:

您可以通过 URL 重写来完成此操作,如 this post 中所述

只需将类似的内容添加到您的 web.Config(将 Legacey/Legacey 替换为 asp 页面的重定向 URL):

<system.webServer> 
  <rewrite> 
    <rules> 
      <rule name="Redirect ASP Files to new URL" stopProcessing="true"> 
        <match url="*\.asp" /> 
        <action type="Redirect" url="Legacey/Legacey" appendQueryString="false" /> 
      </rule> 
    </rules> 
  </rewrite>
</system.webServer> 

我没有测试过,这只是我从那个帖子中了解到的。

【讨论】:

  • 如果这个asp文件确实存在会怎样?有没有办法让它在文件存在时使用它,但如果它不存在则重定向?
猜你喜欢
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多