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

.NET Core 5如何将www域名重定向到非www?内置方法不生效如何解决?

非www重定向不生效的问题修复方案

核心问题点

  • 重写规则仅注册在非开发环境的else分支中,如果你在开发环境下调试,这段代码根本不会执行,自然不会触发重定向。
  • 内置无参AddRedirectToNonWww()方法默认仅适配顶级域名场景,对子域名场景默认不生效。
  • 中间件顺序错误:UseRewriter必须放在UseStaticFiles、UseRouting等处理请求的中间件之前,否则请求会被前置中间件直接响应,不会进入重写逻辑。

修复代码

无需自定义重写逻辑,使用.NET 5+ 内置的带参数重载即可适配子域名场景,同时调整中间件顺序:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 重写中间件放在请求处理流程最前端
    if (!env.IsDevelopment())
    {
        app.UseRewriter(new RewriteOptions()
            // 第一个参数为301永久重定向状态码,第二个参数为你的主域名
            .AddRedirectToNonWww(301, "your-domain.com")
        );
    }

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    // 其他中间件全部放在重写规则之后
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

注意事项

  • 若你使用的是.NET Core 3.1及更低版本,无参AddRedirectToNonWww不支持子域名处理,升级到.NET 5+即可使用带域名参数的官方重载。
  • 测试前请清除浏览器缓存,301永久重定向会被浏览器长期缓存,硬刷新或者开启浏览器无痕模式测试可以避免缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:15:00