だるろぐ

明日できることは、今日しない。

ASP.NET Core:特定のリクエストをミドルウェアでリダイレクトする

f:id:daruyanagi:20170816021356p:plain

旧ドメインから新ドメインへのリダイレクトを Controller でやっていたのだけど、実はミドルウェアでできることを今日知った……。情報弱者にもほどがある。

docs.microsoft.com

具体的には、こんな感じ。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
        
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        var options = new RewriteOptions()
            .AddRedirect("entry/(.*)", "http://blog.daruyanagi.jp/entry/$1")
            .AddRedirect("category/(.*)", "http://blog.daruyanagi.jp/category/$1")
            .AddRedirect("entries/(.*)", "http://blog.daruyanagi.jp/entries/$1")
            .AddRedirect("search/(.*)", "http://blog.daruyanagi.jp/search/$1")
            .AddRedirect("touch/(.*)", "http://blog.daruyanagi.jp/touch/$1")
            .AddRedirect("embed/(.*)", "http://blog.daruyanagi.jp/embed/$1");
        app.UseRewriter(options);

        app.UseStaticFiles();
        app.UseMvc();
    }
}

今まで自分がやってきたやり方はクソなので、もう忘れようと思う。

blog.daruyanagi.jp

blog.daruyanagi.jp

そのほかにも URL リライトを行ったり、IIS や Apache のリライトルールを読み込んで利用したり、ルールをメソッドで記述したり、IRule インターフェースでリライトを定義したりできるみたいですね。