2017-06-28 11 views
2

.NETコアで別のURLにリダイレクトしようとしています。元のURLはMicrosoft.AspNetCore.RewriteのURLリダイレクトミドルウェアはリダイレクトされません

http://localhost:3000/en/ad/test/1758

、あなたは私のStartup.csの設定()メソッドを参照してください以下の通りです。何らかの理由で、このルールは私が見る限り決して打たれません。私が正規表現を^(.*)$に変更すると、もちろん、毎回ヒットしますが、正規表現ではそれがうまくいかないことがわかります。

なぜですか?

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime applicationLifetime, ILoggerFactory loggerFactory) 
{ 
    app.UseRewriter(new RewriteOptions().AddRedirect(@"^en/ad/.*/(\d+)$", this.Configuration["Api:PublicUrl"] + "/en/ad/$1")); 

    applicationLifetime.ApplicationStopping.Register(OnShutdown); 

    loggerFactory.AddConsole(); 

    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
    } 

    // Serve wwwroot as root 
    app.UseFileServer(); 

    // Serve /node_modules as a separate root (for packages that use other npm modules client side) 
    app.UseFileServer(new FileServerOptions() 
    { 
     // Set root of file server (remember not wwwroot!) 
     FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "node_modules")), 
     // Only react to requests that match this path 
     RequestPath = "/node_modules" 
    }); 
} 
+0

「http:// localhost:3000/en/ad/test/1758」を「http:// somesite.com/en/ad/1758」にリダイレクトしますか? – Win

+0

@ウィンはい、それが判明したので、私はこのルールをインターセプトしていたいくつかのルールを持つweb.configを持っていました。それがうまくいかない理由です。それ以来、期待通りの動作を得るために自分でIRuleを実装しました。私は今日後で答えを投稿します:) – Maritim

+0

私は '@"^en/ad /.*/(\ d +)$ "'をテストし、期待通りに機能しました。私はあなたが把握してうれしい。 – Win

答えて

1

それは私が傍受web.configファイルのルールを持っていたが判明したので、この話の教訓は、.NETのコア規則へのあなたのweb.configファイルに完全にポートであり、単に部分的に:)徹底されていないとして !

関連する問題