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

ASP.NET Core 5.0中如何将旧.aspx页面重定向或路由到IIS托管的控制器操作

ASP.NET Core 5.0 旧.aspx路径重定向解决方案

推荐优先采用301永久重定向方案,对搜索引擎收录最友好,旧链接的权重会完全转移到新路径,适配你目前已有数千条旧.aspx收录的场景。

方案1:内置URL重写中间件(推荐)

无需安装额外依赖,ASP.NET Core 5.0 已内置重写中间件,配置步骤如下:

  1. 打开项目的Startup.cs文件,在Configure方法的最开头(至少要在UseRouting、UseEndpoints等中间件之前)添加重写规则配置:
using Microsoft.AspNetCore.Rewrite;
using System.Net;

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    var rewriteOptions = new RewriteOptions()
        // 通用规则1:匹配根目录下的 xxx.aspx ,重定向到 /xxx/index
        .AddRedirect(@"^(\w+)\.aspx$", "$1/index", (int)HttpStatusCode.MovedPermanently)
        // 通用规则2:匹配多级目录下的 xxx/xxx.aspx ,重定向到 /xxx/xxx/index
        .AddRedirect(@"^([\w/]+)\.aspx$", "$1/index", (int)HttpStatusCode.MovedPermanently)
        // 特殊规则:如果有个别路径不符合通用规则,单独加在通用规则前面即可
        // 例如 .AddRedirect(@"^special-old\.aspx$", "/new/custom/path", 301)
        ;
    
    app.UseRewriter(rewriteOptions);

    // 下方保留你原本的其他中间件配置
    app.UseRouting();
    // ...其他中间件
    app.UseEndpoints(endpoints =>
    {
        // ...原本的路由配置
    });
}

方案优势

  • 自动保留原请求的查询参数,例如quote.aspx?id=123会自动重定向到quote/index?id=123
  • 301状态码会通知搜索引擎替换旧的收录链接,不会影响站点的SEO排名
  • 规则支持正则,数千条不同的.aspx路径只要符合命名规则就不需要单独配置

方案2:路由直接映射(无需跳转,URL不变)

如果你不需要更新搜索引擎收录,希望用户访问旧.aspx路径时URL不变,直接返回对应控制器的内容,可以选择路由映射方案:
在Startup.cs的UseEndpoints配置中添加专属路由模板即可:

app.UseEndpoints(endpoints =>
{
    // 匹配所有.aspx路径,映射到对应控制器的Index方法
    endpoints.MapControllerRoute(
        name: "aspxRoute",
        pattern: "{controller}.aspx",
        defaults: new { action = "Index" });
    
    // 保留你原本的默认路由
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

验证方法

配置完成后可以通过浏览器开发者工具的网络面板,或者curl命令查看响应,确认返回状态码为301,Location响应头为目标新路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:09:00