Есть сайт на 1С-Битрикс с изображениями в форматах JPEG и PNG. Нашёл статью
https://camouf.ru/blog-note/7780/ , в которой рассказано, как на лету вместо JPEG и PNG отдавать WebP. Реализовано так:
location ~* ^.+\.(jpg|jpeg|png)$
{
if ( $http_accept ~* webp ) {
set $webp "A";
}
if ( $request_filename ~ (.+)\.(png|jpe?g)$ ) {
set $file_without_ext $1;
}
if ( -f $file_without_ext.webp ) {
set $webp "${webp}E";
}
if ( $webp = AE ) {
add_header Vary Accept;
rewrite ^(.+)\.(png|jpe?g)$ $1.webp break;
}
expires 365d;
}
Проблема в том, что rewrite работает, только если в имени файла содержатся латинские символы. Если в имени файла присутствует кириллица или пробел, то rewrite не работает, по всей видимости из-за того, что имя файла %-encoded. Есть ли простой способ заставить nginx декодировать содержимое $request_filename?