Регулярное выражение NGINX для сопоставления местоположения с необязательным параметром - PullRequest
0 голосов
/ 04 февраля 2019

Мне нравится сопоставлять местоположение с двумя необязательными параметрами, чтобы оно совпадало

/images/my.jpg
/images/my.jpg/200
/images/my.jpg/200/
/images/my.jpg/200/400
/images/my.jpg/200/400/

Я использую три группы совпадений, чтобы я мог получить совпавшую часть в переменных $ image, $ width и $ height.

Я пробовал этот запрос.Это работает, только если указано полное местоположение, но не совпадает, если отсутствует один из параметров

~ ^/images/(?<img>.+?)/(?<width>\d+)/(?<height>\d+)?$

Я также пытался, который не работает вообще

~ ^/images/(?<img>.+?)?(/?<width>\d+)?(/?<height>\d+)?$

, пожалуйста, помогите- У меня есть входные данные здесь.https://regex101.com/r/qU7tI7/6

Конфигурация nginx здесь

 server {
    listen       80;
    server_name  f.myhost.com;
    set $sitename f.myhost.com;

    root $root_folder/myhost.com/files;
    set $path_info "";

    location / {
            root   /var/www/myhost.com/app/api/;
            include conf.d/site.template;
            add_header X-test "root";
    }

    location /files {
            root   /var/www/myhost.com/app/;
            include conf.d/site.template;
    }

    location ~ ^/images/(?<img>[^/]+)(/(?<width>\d*))?(/(?<height>\d*))?$ {
    #       root   /var/www/myhost.com/files/;
            alias   /var/www/myhost.com/app/test/$image;
    #       include conf.d/site.template;
            add_header X-test "test";
            add_header X-width "$width";
            add_header X-height "$height";
            add_header X-name "$image";
            image_filter resize $width -;
            image_filter_jpeg_quality 75;
            image_filter_buffer 8M;


    }

 }
...