【问题标题】:NGINX Rewrite for Latin characterNGINX 重写拉丁字符
【发布时间】:2021-08-11 22:47:11
【问题描述】:

我需要添加一个 NGINX 重写,以使用以下模式的 URL 中的常规“i”替换“İ”(大写 I,顶部带有点):

我能够使用 (?:[\x{130}]) 捕获“İ”,如下所示:

https://regex101.com/r/ZfWlGa/1

当翻译成 NGINX 时,重写如下。它不起作用。

重写 (.)(?:[\x{130}])(.) $1i$2 永久;

也尝试了相反的方法,即找到非ASCII字符并替换为“i”,如下所示。它也不起作用。

https://regex101.com/r/VxBB30/1

正确的做法是什么?

【问题讨论】:

  • 试试:rewrite ^(.*)\xC4\xB0(.*)$ $1i$2 permanent;
  • @RichardSmith,感谢您的解决方案。它按要求工作。

标签: regex nginx url-rewriting


【解决方案1】:

我认为 Nginx 正则表达式语法不支持 Unicode 代码点表示法。您可以改为将代码点编写为两个八位字节。 U+0130 在 UTF8 中表示为两个八位字节 C4B0

例如:

rewrite ^(.*)\xC4\xB0(.*)$ $1i$2 permanent;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 2015-06-26
    • 2013-02-21
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多