nginx:重写utf8:为什么小写

时间:2013-06-02 13:10:07

标签: utf-8 nginx rewrite

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

在我的conf中         if($ uri~ ^ / K(。+)){           设置$ bb $ 1;           重写^(。*)$ $ scheme:// $ host / k $ bb permanent;         }

我不明白为什么但是 / 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这样做?是否有可能阻止这个?

我不能只是大写一切,因为有一些拉丁字母,我的路线区分大小写

感谢

1 个答案:

答案 0 :(得分:0)

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

location ~ ^/K[a-z]/.*$ {
    rewrite ^/K([a-z])/(.*)$ /k$1/$2;
}