Welcome! Log In Create A New Profile

Advanced

Re: Nginx и регулярные выражения

Alexey via nginx-ru
April 08, 2019 05:04PM
08.04.2019 19:18, Sergey Kandaurov пишет:
>> On 8 Apr 2019, at 19:03, RuslanValitov <nginx-forum@forum.nginx.org> wrote:
>>
>> Добрый день. Пишу conf файл для своего сайта.
>> Задача сделать Location который удовлетворяет следующим путям:
>> site.ru/catalog/
>> site.ru/catalog/?id=3
>> site.ru/catalog/1/
>> site.ru/catalog/1/?id=3
>> при этом необходимо получить значение $1 если оно есть.
>>
>> Использую регулярное выражение:
>> location ~* catalog/(\w+)
>> --
>> site.ru/catalog/1/ -работает
>> site.ru/catalog/1/?id=3 -работает
>> site.ru/catalog/ - 404
>> --
>>
>> Подскажите как изменить регулярное выражение что бы учитывался вариант
>> (site.ru/catalog/) ?
> Используйте квантификатор "?":
> location ~* catalog/(\w+)?
>
> https://www.pcre.org/original/doc/html/pcrepattern.html#SEC17
>
и "?id=3" не часть uri и в проверку  регулярного выражения в location не
попадает вообще...

и в приведенное выражение Вы поймаете еще и
/Tratata/My/Super/TheCaTaLog/TheRE/AreMoRe/letters и в $1 будет TheRE

Но, возможно, оно Вам так и нужно., ну или

location ~ "^/catalog/(?:(?<catalogid>\d+)/)?$"

номер после id будет в $catalogid

наличие параметра id можно посмотреть в $arg_id внутри локешна.

Ну так.. :)

/Алексей

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Nginx и регулярные выражения

RuslanValitov April 08, 2019 12:03PM

Re: Nginx и регулярные выражения

Sergey Kandaurov April 08, 2019 12:20PM

Re: Nginx и регулярные выражения

RuslanValitov April 08, 2019 12:52PM

Re: Nginx и регулярные выражения

Alexey via nginx-ru April 08, 2019 05:04PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 174
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready