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

.NET Core 6.0中移除URL路径中的控制器与方法

移除URL路径中控制器和方法的解决方案

下面分不同技术场景给出具体实现方式:

ASP.NET Core 项目

直接用路由重写中间件实现,在Program.cs里添加规则:

var app = builder.Build();

// 配置路由重写
var rewriteOptions = new RewriteOptions()
    // 匹配 /Account/View 或 /Account/View/,重写到根路径(地址栏不变)
    .AddRewrite(@"^Account/View/?$", "", skipRemainingRules: true);
    // 如果需要地址栏同步更新(SEO友好的永久重定向),换成下面这行
    // .AddRedirect(@"^Account/View/?$", "", StatusCodes.Status301MovedPermanently);

app.UseRewriter(rewriteOptions);

// 其他中间件配置...
app.Run();

ASP.NET MVC(老版本)

在项目的Web.config里配置URL重写模块:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Clean Account/View Path" stopProcessing="true">
        <match url="^Account/View/?$" />
        <!-- 内部重写(地址栏不变) -->
        <action type="Rewrite" url="/" />
        <!-- 若要永久重定向,把type改成Redirect,添加redirectType="Permanent" -->
        <!-- <action type="Redirect" url="/" redirectType="Permanent" /> -->
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Nginx 反向代理场景

在Nginx的站点配置server块中添加重写规则:

server {
    listen 80;
    server_name www.mywebsite.com;

    # 永久重定向,地址栏会更新为根域名
    rewrite ^/Account/View/?$ / permanent;
    # 如果不需要地址栏变化,用内部重写
    # rewrite ^/Account/View/?$ / last;

    # 后端代理配置
    location / {
        proxy_pass http://your_backend_address;
    }
}

Apache 服务器场景

在项目根目录的.htaccess文件(或Apache主配置文件)中添加:

RewriteEngine On
# 永久重定向,地址栏更新
RewriteRule ^Account/View/?$ / [R=301,L]
# 内部重写(地址栏不变)则去掉R=301
# RewriteRule ^Account/View/?$ / [L]

扩展说明

如果需要批量移除所有/控制器/方法格式的路径,而非仅Account/View,可以把正则表达式改成^[^/]+/[^/]+/?$,但要注意排除静态资源路径(如css、js、images等),避免影响资源加载,比如在Apache里可以加:

RewriteCond %{REQUEST_URI} !^/(css|js|images)/
RewriteRule ^[^/]+/[^/]+/?$ / [R=301,L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:02:59