.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
相关产品推荐
相关产品推荐

