怎么查网站备案域名备案信息,东莞网站建设教程,江门网页定制,宿迁网站推广公司URL rewriting 是根据预先配置好的一组规则去修改 request url#xff0c;值得注意的是#xff1a;URL Rewriting 的重写功能和 url 重定向 是两个概念#xff0c;本篇我们就来讨论下如何在 ASP.NET Core 中对 url 进行 rewriting。安装 URL Rewriting 中间件 要想使用 URL … URL rewriting 是根据预先配置好的一组规则去修改 request url值得注意的是URL Rewriting 的重写功能和 url 重定向 是两个概念本篇我们就来讨论下如何在 ASP.NET Core 中对 url 进行 rewriting。安装 URL Rewriting 中间件 要想使用 URL Rewriting 功能需要通过 nuget 引用 Microsoft.AspNetCore.Rewrite 包可以通过 Visual Studio 2019 的 NuGet package manager 可视化界面安装 或者 通过 NuGet package manager 命令行工具输入以下命令
dotnet add package Microsoft.AspNetCore.Rewriteurl重定向 和 url重写 url重定向 和 url重写 是两个完全不同的概念url重定向是 server 端返回 Http Status Code 301 或者 302 给 客户端并且告诉客户端使用另一个链接访问资源客户端拿到新链接后实现跳转从这个过程中可以看出这个操作是发生在客户端而且还多了一个不可回避的 round-trip。相反url重写 是server端的操作它会根据预先指定的一组规则去修改request url在 rewriting 的过程中修改后的 request url 不会和 重定向 一样再发送给客户端只要是在一个请求内client 根本不关心 server 端内部是如何实现资源切换的值得注意的是URL rewriting 也不是什么新的技术,在 ASP.NET 时代就有了。总的来说url重写 是发生在 server 端并且没有所谓的 round-trip。配置 url 重定向 可以在 Startup 类中进行 URL rewriting 和 URL redirection 功能配置举个例子实现 http 请求自动跳转成 https。public class Startup{public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.UseRewriter(new RewriteOptions().AddRedirectToHttps());}}配置 URL rewriting 下面的代码展示了 URL rewriting请注意 request url 已经被 AddRewrite 的规则所监视。public class Startup{public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler(/Home/Error);}app.UseStaticFiles();//rewritevar rewrite new RewriteOptions().AddRewrite(Home/Index, Home/Privacy, true);app.UseRewriter(rewrite);app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints {endpoints.MapControllerRoute(name: default,pattern: {controllerHome}/{actionIndex}/{id?});});}}从图中可以看出url 请求的是 Home/Index显示的是 Home/Privacy 内容如果你有更加复杂的业务需求可以使用 正则表达式 来定义规则,如下代码所示var rewrite new RewriteOptions().AddRewrite(^Home/User?Code(\d), Home/$1, true);app.UseRewriter(rewrite);使用自定义的 URL rewriting 如果正则表达式都不能满足需求完全可以 自定义 来实现深度定制只需要实现 IRule 接口中的 ApplyRule 方法即可如下代码所示public class CustomRule : Microsoft.AspNetCore.Rewrite.IRule{public void ApplyRule(RewriteContext context){throw new NotImplementedException();}}下面的代码展示了如何使用 ApplyRule不过这里只是为了演示目的你可以根据自己的需求来实现。public class CustomRule : Microsoft.AspNetCore.Rewrite.IRule{public void ApplyRule(RewriteContext context){var request context.HttpContext.Request;var host request.Host;if (host.Host.Contains(localhost,StringComparison.OrdinalIgnoreCase)){if(host.Port 80){context.Result RuleResult.ContinueRules;return;} }var response context.HttpContext.Response;response.StatusCode (int)HttpStatusCode. BadRequest;context.Result RuleResult.EndResponse;}}将 自定义规则 添加到 rule 集合 可以在 Startup.Configure 方法中将自定义的rule规则添加到 rule 集合中如下代码所示public void Configure(IApplicationBuilder app, IHostingEnvironment env){var options new RewriteOptions();options.Rules.Add(new CustomRule())app.UseRewriter(options);}总结一下URL rewriting 切断了 url地址 和 资源 的映射关系你可以利用这项技术定义一些非常语义化的 url 地址也方便 搜索引擎 收录。译文链接https://www.infoworld.com/article/3445867/how-to-use-url-rewriting-middleware-in-aspnet-core.html