0

以前は言語に大文字を使用していたルートがいくつかありますが、今は小文字が必要です。ここにルートがあります: /Ka/განცხადებები 単純に /ka/განცხადებები になるはずです

私の設定で 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

本当の問題に焦点を当てます。これらの URL は同一であるため、これは Rails アプリでは問題になりません。nginx は一致するために URL をデコードし、URL を書き換える必要がある場合は小文字を使用して再エンコードするのではないかと思われます。また、どこかで $bb 変数が本当に必要でない限り、これはずっと簡単に行うことができます:

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