c# - 将任何带有变音符号的传入 URL 重定向为等效的没有变音符号的 URL

标签 c# asp.net

如何为带有重音符号的 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/

相关文章:

c# - 如何从服务器端代码获取控件的完整 ClientID

asp.net - ASP.NET 客户端将单个字符串值(在代码中定义)传递给服务器的绝对最简单的方法是什么?

.net - 需要在 asp.net 中实现雅虎注册表单名称字段的想法

c# - 无法密封,因为它不是覆盖

c# - 使用动态属性名称将数据序列化为 json 字符串

c# - 代码契约(Contract)不检查空条件。为什么?

c# - 初始化服务类中的 FileStream 和 StreamWriter 字段

c# - 将多个内阁文件捆绑在一起? (适用于 Windows 移动设备)

c# - 包 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-msbuild2-final' 具有项目不支持的包类型 'DotnetCliTool'

asp.net - 从网站下载后文件上的数字签名消失了