Ich versuche, eine URL zu einem anderen in .NET Core umleiten. Der Ursprung URL istURL Redirect Middleware in Microsoft.AspNetCore.Rewrite nicht umleiten
http://localhost:3000/en/ad/test/1758
und unter Ihnen das Configure() -Methode meiner Startup.cs sehen. Aus irgendeinem Grund wird diese Regel nie so weit getroffen, wie ich sehen kann. Wenn ich die Regex auf ^(.*)$
ändere, wird es natürlich jedes Mal schlagen, aber mit der Regex, die Sie unten sehen, funktioniert es einfach nicht.
Warum?
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"
});
}
Möchten Sie "http: // localhost: 3000/de/ad/test/1758" auf "http: // somesite.com/de/ad/1758" umleiten? – Win
@Win Ja, und wie sich herausstellte, hatte ich eine web.config mit einigen Regeln, die diese Regel abfangen. Deshalb hat es nicht funktioniert. Seitdem habe ich meine eigenen Implementierungen von IRule geschrieben, um das erwartete Verhalten zu erhalten. Ich werde später eine Antwort posten :) – Maritim
Ich testete '@"^en/ad /.*/ (\ d +) $ "', und es funktionierte wie erwartet. Ich bin froh, dass du es herausgefunden hast. – Win