ASP.NET Core中使用URL重寫


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() 之前。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM