私はこの場所のルールを持っています:
location ~ ^/banks/(?P<region>[\w/~\-]+?)/responses/?$ {
rewrite ^ $scheme://${host}/services/responses/list/city/${region}/? permanent;
}
次のような URL に最適です。
http://example.com/banks/Arhangel~skaya_oblast~/Mirnyiy/responses/
しかし今、私は自分の場所を変更して、その中の括弧でURLを一致させる必要があります. 私はこのバージョンを使用します:
location ~ ^/banks/(?P<region>[\w/~\-()]+?)/responses/?$ {
rewrite ^ $scheme://${host}/services/responses/list/city/${region}/? permanent;
}
ただし、 url の書き換えは発生していません/banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/
。
このパターンを php preg_match関数でチェックします。
preg_match('|^/banks/(?P<region>[\w/~\-()]+?)/responses/?$|',
'/banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/');
そして を返すので、このパターンは url とおよび に1
一致します。(
)
さらに、この文字列を python re.search でチェックします。
import re
matches = re.search('|^/banks/(?P<region>[\w/~\-()]+?)/responses/?$|','/banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/')
print matches.start()
を返す0
ので、このパターンは最初からこの文字列にマッチします。
しかし、nginx はそうは考えていません。
この URL に一致するように nginx ロケーション ルールを変更するにはどうすればよい/banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/
ですか?
PS nginxの私のバージョンはnginx/1.9.10