ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,終於可以進行 URL 重寫了,實際使用體驗一下。
首先要將 ASP.NET Core 項目升級至 .NET Core 1.1 Preview 1(參考 .NET跨平台之旅:將示例站點升級至 .NET Core 1.1 Preview 1 ),然后在 project.json 添加 "Microsoft.AspNetCore.Rewrite" 的引用並運行 donet restore 安裝對應的nuget包。
"dependencies": { "Microsoft.AspNetCore.Rewrite": "1.0.0-preview1-final" }
接着在 Startup.cs 的 Configure() 方法中通過 app.UseRewriter() 配置重寫規則,比如要將 http://about.cnblogs.com/ 重寫為 http://about.cnblogs.com/about/intro ,可以這么寫:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory, IHostingEnvironment env) { app.UseRewriter(new RewriteOptions().AddRewrite("^$", "about/intro", true)); }
AddRewrite的第1個參數("^$")是匹配重寫前的URL的正則表達式,第2個參數("about/intro")是重寫后的URL,第3個參數(true)表示匹配成功1條規則后是否放棄后續規則的匹配。
對於URL匹配,還是微軟的老規矩,URL的開頭沒有斜杠,我個人比較喜歡以斜杠開頭:
//不支持的寫法 app.UseRewriter(new RewriteOptions().AddRewrite("^/$", "/about/intro", true));
需要注意的是 app.UseRewriter() 要放在 app.UseMvc(),app.UseMvcWithDefaultRoute(),app.UseRouter() 之前。