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

如何为ASP.NET Core 2中所有Razor页面添加.html URL后缀?

如何给ASP.NET Core 2.0 Razor页面添加.html后缀?

我来帮你搞定这个需求——要让所有Razor页面的URL带上.html后缀,核心是修改Razor页面的路由约定,具体步骤如下:

1. 配置全局Razor页面路由模板

打开项目的Startup.cs文件,找到ConfigureServices方法,在AddMvc()的配置中添加RazorPagesOptions的约定设置,给所有页面的路由模板追加.html后缀:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
        .AddRazorPagesOptions(options =>
        {
            // 给所有页面的路由添加.html后缀
            options.Conventions.AddFolderRouteModelConvention("/", model =>
            {
                foreach (var selector in model.Selectors)
                {
                    var originalTemplate = selector.AttributeRouteModel.Template;
                    // 给原路由模板加上.html后缀
                    selector.AttributeRouteModel.Template = originalTemplate + ".html";
                }
            });
        });
}

这段代码会遍历所有Razor页面的路由规则,自动给每个页面的URL模板加上.html后缀。比如原来的/test就会变成/test.html。

2. (可选)兼容不带后缀的访问(重定向到带后缀URL)

如果希望用户访问不带后缀的URL时,自动跳转到带.html的版本,可以在Configure方法中添加URL重写规则:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 其他中间件配置(比如UseStaticFiles、UseMvc等)之前添加重写规则
    app.UseRewriter(new RewriteOptions()
        // 匹配不带后缀的URL,重定向到带.html的版本
        .AddRewrite(@"^([^\.]+)$", "$1.html", skipRemainingRules: true));

    app.UseMvc();
}

这样用户访问http://localhost/test时,会自动跳转到http://localhost/test.html,既满足你的URL显示需求,又不会影响用户的旧链接访问。

3. 验证效果

启动项目后:

  • 访问http://localhost/test.html应该能正常打开/Pages/test.cshtml页面
  • 如果配置了重写规则,访问http://localhost/test会自动跳转到带后缀的URL

另外,页面内的TagHelper链接(比如<a asp-page="test">测试页面</a>)会自动生成带.html的URL,不需要手动修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:01:23