2 votes

Réécriture d'URL dans ASP.NET Core 2.1 sans regex

Ma favicon est à /images/favicon.ico plutôt que la Racine. Dans Startup.cs Je peux ajouter une redirection pour éviter un 404 :

app.UseRewriter(new RewriteOptions()
  .AddRedirect("favicon.ico", "images/favicon.ico"));

Cela fonctionne bien, mais repose bien sûr sur une redirection. Les docs montrent également comment utiliser la réécriture, afin que l'utilisateur ne voie pas de redirection.

J'ai essayé ceci, mais j'ai obtenu un 404 :

app.UseRewriter(new RewriteOptions()
  .AddRewrite("favicon.ico", "images/favicon.ico", skipRemainingRules:true));

J'ai donc pensé que je devais peut-être utiliser une regex factice :

app.UseRewriter(new RewriteOptions()
  .AddRewrite("^(favicon.ico)$", "images/favicon.ico", skipRemainingRules:true));

Mais je reçois toujours un 404. Comment faire pour que cela fonctionne ?

2voto

Mathieu VIALES Points 2067

Conformément à La réponse de Ionix les règles de réécriture doivent être appliquées avant l'appel à la fonction UseStaticFiles()


Vieille réponse, n'est plus pertinente

Suite à votre question, j'ai fait beaucoup de tests avec la AddRewrite et j'ai essayé beaucoup de choses inspirées par la méthode de la documentation officielle mais rien n'a fonctionné. Au mieux, j'ai obtenu une redirection ...

Ma réponse est donc : vous ne pouvez pas ! Seule une redirection fonctionne. Si vous trouvez un moyen de faire fonctionner une vraie réécriture, faites-le moi savoir, mais pour l'instant je considère que c'est impossible.

Pourquoi ne pas simplement utiliser la solution qui fonctionne, la redirection ? Est-ce que vous besoin de une réécriture ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X