如何为带有重音符号的 URL 实现 URL 重定向?我希望所有带有重音的潜在 URL 请求都可以在没有重写的情况下重写。这是针对法语网站上的客户名称。用户应该输入不带重音的名称,但如果他们不这样做,那么我希望他们以任何一种方式登陆正确的页面。
示例
用户输入:www.mysite.fr/client/andré
==> 用户被重定向到www.mysite.fr/client/andre
数据库中的资源标识符(clientName)不带重音存储。这是我的 RouteConfig.cs:
routes.MapRoute(
name: "ClientDetails",
url: "client/{clientName}",
defaults: new { controller = "Client", action = "ClientDetails" }
我知道 removing accents on a string 有多种方法.是的,这将允许我从 Controller 方法中收到的 URL 参数中删除重音。但是,我希望保持一致,以便用户始终看到不带重音符号的 URL。因此,如何在整个 Web 应用程序中实现重定向 URL?在 RouteConfig.cs 或 Web.config 中是否有一种简单的方法可以做到这一点?
最佳答案
我认为你的意思是 Redirect
而不是 Rewrite
因为 Rewrite
意味着 URL 保持不变,并且你显示了预期的内容(我认为这是你不想要的)。
我认为你想要的策略可以通过创建 custom route constraint 来实现匹配所有带有任何特殊字符的内容。
使这个自定义路由成为你的路由表中首先要评估的东西,并将这个自定义路由映射到一个“RedirectController”(你将创建),它负责从 URL 中删除特殊字符并重定向用户访问没有特殊字符的 URL
关于c# - 将任何带有变音符号的传入 URL 重定向为等效的没有变音符号的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34231236/