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"
});
}
「http:// localhost:3000/en/ad/test/1758」を「http:// somesite.com/en/ad/1758」にリダイレクトしますか? – Win
@ウィンはい、それが判明したので、私はこのルールをインターセプトしていたいくつかのルールを持つweb.configを持っていました。それがうまくいかない理由です。それ以来、期待通りの動作を得るために自分でIRuleを実装しました。私は今日後で答えを投稿します:) – Maritim
私は '@"^en/ad /.*/(\ d +)$ "'をテストし、期待通りに機能しました。私はあなたが把握してうれしい。 – Win