首页 > 解决方案 > 没有正则表达式的 ASP.NET Core 2.1 中的 URL 重写

问题描述

我的图标位于/images/favicon.ico而不是根。在Startup.cs我可以添加重定向以避免 404:

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

这很好用,但当然依赖于重定向。文档还展示了如何使用重写,因此用户看不到重定向。

我试过这个,但得到一个 404:

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

所以我想也许我需要使用一个虚拟的正则表达式:

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

但我仍然得到 404。我该如何进行这项工作?

标签: asp.net-coreurl-rewritingasp.net-core-2.1

解决方案


根据Ionix 的回答,重写规则必须在调用之前应用UseStaticFiles()


旧答案,不再相关

根据您的问题,我对该方法进行了很多测试,并且尝试了很多受官方文档AddRewrite启发的东西,但没有任何效果。充其量我得到了一个重定向......

所以我的回答是:你不能!只有重定向有效。如果您找到一种方法来进行真正的重写工作,请告诉我,但现在我认为这是不可能的。

为什么不简单地使用有效的解决方案,重定向?你需要重写吗?


推荐阅读