IIS Url重写返回404错误

IIS Url重写返回404错误,iis,url-rewriting,Iis,Url Rewriting,我有一个带有重写URL的IIS站点,可以对API用户隐藏端口(不是我的选择)。换句话说,主机将URL重写到同一台机器上的不同站点 因此,如果我访问(端口11001仅用于测试,它最终将位于端口80): 我希望重写返回(分别)的结果: 这里只有一个重写规则,但是当第二个URL被重写并正确返回时,第一个on会产生404错误 我可以访问这两个重写的链接直接和他们将工作。我还可以根据完全相同的规则进行临时重定向 我的重写规则如下所示: Match - regex, ignore case: .*

我有一个带有重写URL的IIS站点,可以对API用户隐藏端口(不是我的选择)。换句话说,主机将URL重写到同一台机器上的不同站点

因此,如果我访问(端口11001仅用于测试,它最终将位于端口80):

我希望重写返回(分别)的结果:

这里只有一个重写规则,但是当第二个URL被重写并正确返回时,第一个on会产生404错误

我可以访问这两个重写的链接直接和他们将工作。我还可以根据完全相同的规则进行临时重定向

我的重写规则如下所示:

Match 
    - regex, ignore case: .*/accounts.*
Action
    - Rewrite
        - URL: 'http://apitest.mycompany.com:9600/{R:0}'
        - Append query string: true
        - Stop processing of subsequent rules: true
我一直在查看失败的重写日志文件,但看不出问题出在哪里:


我花了两天时间编写了所有可能的重写规则组合,终于发现了与规则无关的问题

问题出在我的
RouteConfig
中。默认设置为:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
这意味着由少于4个路径元素组成的任何路由都将被ASP.NET路由捕获,而不是URL重写。我希望其他人能够详细说明这是为什么,但似乎其顺序是:

Redirect > ASP Routing > Rewrite
我希望其他人可以使用这个答案,因为这花费了我整整两天的工作

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
Redirect > ASP Routing > Rewrite