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

ASP.NET Core实现两类URL重定向:.xxx转.yyy及.com域名转.net

嘿,这就帮你搞定这两个URL重定向的需求,都是基于ASP.NET Core的URL重写中间件实现的,直接看代码和说明就行:

1. 实现.xxx后缀到.yyy后缀的请求重定向

我们可以通过检查请求路径的后缀,匹配到.xxx结尾的请求后,替换为.yyy后缀并完成重定向。以下是具体实现代码:

// 若使用ASP.NET Core 2.x,放在Startup.cs的Configure方法中
// 若使用ASP.NET Core 6+,放在Program.cs的管道配置段(app.UseRouting()之前)
app.UseRewriter(new RewriteOptions().Add(ctx =>
{
    var req = ctx.HttpContext.Request;
    var path = req.Path.Value;

    // 不区分大小写检查路径是否以.xxx结尾
    if (!string.IsNullOrEmpty(path) && path.EndsWith(".xxx", StringComparison.OrdinalIgnoreCase))
    {
        // 替换后缀为.yyy
        var newPath = path.Substring(0, path.Length - 4) + ".yyy";
        // 构建完整的新URL,保留协议、主机、查询字符串
        var newUrl = $"{req.Scheme}://{req.Host}{newPath}{req.QueryString}";

        // 执行301永久重定向(适合长期跳转,对SEO友好)
        // 若需临时重定向,将permanent改为false即可
        ctx.HttpContext.Response.Redirect(newUrl, permanent: true);
        ctx.Result = RuleResult.EndResponse; // 终止后续中间件处理,避免多余操作
    }
}));

小提示:这里用了不区分大小写的匹配,能覆盖XXX、xXx等各种后缀大小写的情况,确保所有相关请求都能被正确处理。

2. 将.com域名请求重定向到.net域名(保留路径和路由)

参照你提供的移除www.的代码示例,我们只需要检查主机名的后缀,替换.com为.net,同时完整保留原请求的路径、查询字符串和路由规则,实现代码如下:

// 若使用ASP.NET Core 2.x,放在Startup.cs的Configure方法中
// 若使用ASP.NET Core 6+,放在Program.cs的管道配置段(app.UseRouting()之前)
app.UseRewriter(new RewriteOptions().Add(ctx =>
{
    var req = ctx.HttpContext.Request;
    var hostName = req.Host.ToString();

    // 不区分大小写检查主机名是否以.com结尾
    if (hostName.EndsWith(".com", StringComparison.OrdinalIgnoreCase))
    {
        // 替换.com后缀为.net
        var newHostName = hostName.Substring(0, hostName.Length - 4) + ".net";
        // 构建新URL,完整保留原请求的协议、路径、查询字符串
        var newUrl = $"{req.Scheme}://{newHostName}{req.Path}{req.QueryString}";

        // 执行301永久重定向,临时重定向可改为permanent: false
        ctx.HttpContext.Response.Redirect(newUrl, permanent: true);
        ctx.Result = RuleResult.EndResponse;
    }
}));

注意:这个方案会处理所有.com结尾的主机名,比如www.example.com会被重定向到www.example.net,api.example.com会转到api.example.net,完全保留原主机的前缀部分,同时路径(比如/products/1)和查询参数(比如?page=2)也会原封不动地保留下来。

内容的提问来源于stack exchange,提问作者mohamad javad Taherian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:13:56