Мне нравится сопоставлять местоположение с двумя необязательными параметрами, чтобы оно совпадало
/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;
}
}