netcore 中的url 重写和动态添加重写规则
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了netcore 中的url 重写和动态添加重写规则,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2624字,纯文字阅读大概需要4分钟。
内容图文
![netcore 中的url 重写和动态添加重写规则](/upload/InfoBanner/zyjiaocheng/1046/6157a8ebf62c470588fba9ade976d4f5.jpg)
URL 重写可能会降低应用的性能。 如果可行,应限制规则的数量和复杂度。
何时使用 URL 重写中间件
如果无法使用以下方法,请使用 URL 重写中间件:
此外,如果应用程序在 HTTP.sys 服务器(旧称 WebListener)上托管,请使用中间件。
使用 IIS、Apache 和 Nginx 中的基于服务器的 URL 重写技术的主要原因:
-
中间件不支持这些模块的完整功能。
服务器模块的一些功能不适用于 ASP.NET Core 项目,例如 IIS 重写模块的
IsFile
和IsDirectory
约束。 在这些情况下,请改为使用中间件。 -
中间件性能与模块性能不匹配。
基准测试是确定哪种方法会最大程度降低性能或降低的性能是否可忽略不计的唯一方法。
Package
URL 重写中间件由 Microsoft.AspNetCore.Rewrite 包提供,该包隐式包含在 ASP.NET Core 应用中。
扩展和选项
通过使用扩展方法为每条重写规则创建 RewriteOptions 类的实例,建立 URL 重写和重写定向规则。 按所需的处理顺序链接多个规则。 使用 UseRewriter 将 RewriteOptions
添加到请求管道时,它会被传递到 URL 重写中间件:
1 public void Configure(IApplicationBuilder app) 2 { 3 using (StreamReader apacheModRewriteStreamReader = 4 File.OpenText("ApacheModRewrite.txt")) 5using (StreamReader iisUrlRewriteStreamReader = 6 File.OpenText("IISUrlRewrite.xml")) 7 { 8var options = new RewriteOptions() 9 .AddRedirect("redirect-rule/(.*)", "redirected/$1") 10 .AddRewrite(@"^rewrite-rule/(\d+)/(\d+)", "rewritten?var1=$1&var2=$2", 11 skipRemainingRules: true) 12 .AddApacheModRewrite(apacheModRewriteStreamReader) 13 .AddIISUrlRewrite(iisUrlRewriteStreamReader) 14 .Add(MethodRules.RedirectXmlFileRequests) 15 .Add(MethodRules.RewriteTextFileRequests) 16 .Add(new RedirectImageRequests(".png", "/png-images")) 17 .Add(new RedirectImageRequests(".jpg", "/jpg-images")); 1819 app.UseRewriter(options); 20 } 2122 app.UseStaticFiles(); 2324 app.Run(context => context.Response.WriteAsync( 25 $"Rewritten or Redirected Url: " + 26 $"{context.Request.Path + context.Request.QueryString}")); 27 }
URL 重写
使用 AddRewrite 创建重写 URL 的规则。 第一个参数包含用于匹配传入 URL 路径的正则表达式。 第二个参数是替换字符串。 第三个参数 skipRemainingRules: {true|false}
指示如果当前规则适用,中间件是否要跳过其他重写规则。
.AddRewrite(@"^rewrite-rule/(\d+)/(\d+)", "rewritten?var1=$1&var2=$2", skipRemainingRules: true)
动态添加重写规则
#在configService 中添加 services.AddSingleton<RewriteOptions>(); # config中添加 RewriteOptions options = app.ApplicationServices.GetService(typeof(RewriteOptions)) as RewriteOptions; options.AddRewrite(@"(.*).jsp", "$1", skipRemainingRules: true); app.UseRewriter(options); #在后续的任意地方获取并添加重写规则 public IActionResult Index() { //IConfiguration configura = HttpContextUtil.ServiceProvider.GetService(typeof(IConfiguration)) as IConfiguration; //IOptions<RewriteOptions> options = HttpContextUtil.ServiceProvider.GetService(typeof(IOptions<RewriteOptions>)) as IOptions<RewriteOptions>; rwOptions.AddRewrite(@"(.*).html", "$1", skipRemainingRules: true); return Content("12"); }
原文:https://www.cnblogs.com/netqq/p/14595508.html
内容总结
以上是互联网集市为您收集整理的netcore 中的url 重写和动态添加重写规则全部内容,希望文章能够帮你解决netcore 中的url 重写和动态添加重写规则所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。