You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS web.config重写:移除URL中指定子目录

解决YARP代理场景下移除URL指定子目录的问题

你的核心问题在于:用IIS重写规则处理后端.NET Framework站点是无效的,因为请求先经过YARP代理层,后端站点的规则无法影响外部访问的URL。正确的做法是在YARP所在的.NET Core代理站点中处理路径转换或重定向。

根据你的需求(将带/web/前缀的URL转为不带该前缀的形式),提供两种适配场景的解决方案:


场景1:后端站点无需/web/前缀

如果后端.NET Framework站点本身可以直接处理不带/web/的路径,只需要将外部带/web/的请求重定向到不带的URL即可:

步骤1:在代理站点的Program.cs中添加重写中间件

using Microsoft.AspNetCore.Rewrite;

var builder = WebApplication.CreateBuilder(args);

// 注册YARP服务
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));

var app = builder.Build();

// 添加重定向规则:匹配/web/开头的路径,永久跳转到去掉/web/的路径
var rewriteOptions = new RewriteOptions()
    .AddRedirect("^web/(.*)", "/$1", 301);

app.UseRewriter(rewriteOptions);

// 启用YARP代理
app.MapReverseProxy();

app.Run();

步骤2:配置YARP的appsettings.json

保持基础转发配置即可:

"ReverseProxy": {
  "Routes": {
    "defaultRoute": {
      "ClusterId": "frameworkSite",
      "Match": {
        "Path": "{**catch-all}"
      }
    }
  },
  "Clusters": {
    "frameworkSite": {
      "Destinations": {
        "site1": {
          "Address": "https://你的.NET Framework站点地址/"
        }
      }
    }
  }
}

场景2:后端站点必须接收带/web/的路径

如果后端站点只能处理带/web/前缀的请求,需要同时做重定向(外部URL去前缀)+ 路径转换(代理时补前缀):

步骤1:Program.cs中的重写规则和场景1一致

同样添加AddRedirect规则,确保外部URL去掉/web/。

步骤2:修改YARP的appsettings.json,添加路径转换

"ReverseProxy": {
  "Routes": {
    "defaultRoute": {
      "ClusterId": "frameworkSite",
      "Match": {
        "Path": "{**catch-all}"
      },
      "Transforms": [
        // 将代理请求的路径转为/web/{原路径},适配后端站点的需求
        { "PathPattern": "/web/{**catch-all}" }
      ]
    }
  },
  "Clusters": {
    "frameworkSite": {
      "Destinations": {
        "site1": {
          "Address": "https://你的.NET Framework站点地址/"
        }
      }
    }
  }
}

这样用户访问www.mysite.com/web/Login时,会先被重定向到www.mysite.com/Login,同时YARP会将该请求转发到后端的/web/Login路径,既满足URL美观性,又保证后端能正确处理请求。


内容的提问来源于stack exchange,提问作者Gustavo Mauricio De Barros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:51:42