0

我有一些以前用大写字母表示语言的路线,现在我想要小写字母。这是一条路线: /Ka/განცხადებები 应该简单地变成 /ka/განცხადებები

在我的 conf if ($uri ~ ^/K(.+)){ set $bb $1; 重写 ^(.*)$ $scheme://$host/k$bb 永久;}

我不明白为什么但是 /ka/%E1%83%92%E1%83%90%E1%83%9C%E1%83%AA%E1%83%AE%E1%83%90%E1%83% 93%E1%83%94%E1%83%91%E1%83%94%E1%83%91%E1%83%98/

变得

/ka/%e1%83%92%e1%83%90%e1%83%9c%e1%83%aa%e1%83%ae%e1%83%90%e1%83%93%e1%83% 94%e1%83%91%e1%83%94%e1%83%91%e1%83%98

即所有大写字母都变成小写字母,这会导致我的rails应用程序出现à pb。

有谁知道为什么 nginx 这样做?有可能阻止这个吗?

我不能只将所有内容都大写,因为有一些拉丁字母,而且我的路线区分大小写

谢谢

4

1 回答 1

0

专注于真正的问题。这对您的 rails 应用程序来说应该不是问题,因为这些 URL 是相同的。我怀疑 nginx 解码 url 以进行匹配,当它必须重写 url 时使用小写重新编码它。此外,除非你真的需要 $bb 变量,否则这可以更容易地完成:

location ~ ^/K[a-z]/.*$ {
    rewrite ^/K([a-z])/(.*)$ /k$1/$2;
}
于 2013-06-03T06:47:22.810 回答