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

.NET Core(Kestrel)下URL重写模块替代方案咨询

在.NET Core 6中实现可配置的URL重写/重定向规则

推荐的NuGet包及配置方案

  • Microsoft.AspNetCore.Rewrite:官方原生包,支持直接从appsettings.json加载规则,无需大量自定义编码
    • 安装命令:Install-Package Microsoft.AspNetCore.Rewrite
    • 在Program.cs中启用:
      var builder = WebApplication.CreateBuilder(args);
      var app = builder.Build();
      
      // 加载配置文件中的重写规则
      var rewriteOptions = new RewriteOptions()
          .AddIISUrlRewrite(builder.Configuration.GetSection("RewriteRules"));
      
      app.UseRewriter(rewriteOptions);
      
      // 其他业务中间件配置...
      app.Run();
      
    • 在appsettings.json中配置规则(兼容IIS URL重写模块的规则格式,支持HTTP_HOST/QUERY_STRING等变量):
      "RewriteRules": [
        {
          "Name": "旧域名重定向至新域名",
          "RuleType": "Redirect",
          "Condition": {
            "Input": "{HTTP_HOST}",
            "Pattern": "^old\\.example\\.com$"
          },
          "Action": {
            "Type": "Redirect",
            "Url": "https://new.example.com{R:0}",
            "RedirectType": "Permanent"
          }
        },
        {
          "Name": "重写查询字符串路由",
          "RuleType": "Rewrite",
          "Condition": {
            "Input": "{QUERY_STRING}",
            "Pattern": "^id=(\\d+)$"
          },
          "Action": {
            "Type": "Rewrite",
            "Url": "/products/{R:1}"
          }
        }
      ]
      
  • UrlRewriteMiddleware:第三方包,对IIS原有规则的兼容性更强,支持更复杂的服务器变量匹配逻辑,配置方式与官方包类似,可直接复用原有IIS规则结构

核心优势

  • 直接复用原有IIS重写规则的配置逻辑,无需重复编写代码规则
  • 规则集中管理在配置文件,修改后无需重新编译部署
  • 完全支持HTTP_HOST、PATH、REQUEST_URI、QUERY_STRING等服务器变量的匹配,覆盖原有需求

注意事项

  • 确保配置规则的语法格式与官方/IIS模块规则一致,避免匹配逻辑出错
  • 调整UseRewriter中间件的顺序,保证重写规则在业务中间件之前执行

内容的提问来源于stack exchange,提问作者TejSoft

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:55:02