2017-06-28 2 views
2

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" 
    }); 
} 
+0

Möchten Sie "http: // localhost: 3000/de/ad/test/1758" auf "http: // somesite.com/de/ad/1758" umleiten? – Win

+0

@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

+0

Ich testete '@"^en/ad /.*/ (\ d +) $ "', und es funktionierte wie erwartet. Ich bin froh, dass du es herausgefunden hast. – Win

Antwort

1

Es stellt sich heraus, dass ich ein Abfangen web.config Regel hatte, so ist die Moral der Geschichte web.config zu .NET Core-Regeln vollständig Port und nicht nur teilweise :) gründlich!