У меня есть это правило местоположение:Переменный захват с скобкой в Nginx месте сопрягая
location ~ ^/banks/(?P<region>[\w/~\-]+?)/responses/?$ {
rewrite^$scheme://${host}/services/responses/list/city/${region}/? permanent;
}
и она работает идеально подходит для URLs как:
http://example.com/banks/Arhangel~skaya_oblast~/Mirnyiy/responses/
Но теперь мне нужно изменить мое местоположение, чтобы соответствовать URLs с круглыми скобками внутри него. Я использую эту версию:
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/');
И это возвращает 1
, так что этот шаблон совпадает с URL (
и )
.
Кроме того, я проверить эту строку с питоном re.search:
import re
matches = re.search('|^/banks/(?P<region>[\w/~\-()]+?)/responses/?$|','/banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/')
print matches.start()
И это возвращает 0
, так что эта модель соответствует этой строке с самого начала.
Но nginx так не считает.
Как изменить правило размещения nginx для соответствия этому URL /banks/Respublika_Saha_(Yakutiya)/Neryungri/responses/
?
P.S. моя версия nginx - nginx/1.9.10
но это работает: [https://regex101.com/r/vI6jZ4/1] (https://regex101.com/r/vI6jZ4/1) –
Да, этот шаблон отлично работает с php 'preg_match' или python' re.search', но не в правиле определения nginx –
Работает для меня на 'nginx' 1.8. 0 –