Здравствуйте.
Есть правило Nginx, оно должно работать именно так. Естественно оно не работает, поскольку в конфигурации этого web-сервера запрещено вставлять логическую конструкцию
If внутри
Location, как впрочем и наоборот. Во всяком случае, встроенный чекер (
nginx -t ), указал мне на эту оплошность и неграмотность.
location ~* ^.+\.(jpeg|jpg|png|bmp)$ {
...
if ($img_extension = ".webp"){
location ~ /image-content/(.*) {
add_header 'Content-Type' 'image/webp';
try_files $uri /image-content/webp/image-content/${1}${img_extension} /webp-gen.php?source=$document_root$request_uri&image-content=image-content&$args;
}
}
...
}
Что здесь происходит? (Что должно происходить)
0. Если переменная
$img_extension содержит значение
".webp", тогда выполняем условие.
1. На сервер поступает запрос вида
https://example.org/image-content/uploads/test_ima....
2. Сервер ищет файл
test_image.png.webp по uri
/image-content/uploads/webp/test_image.png.webp.
3. Устанавливаем заголовок
"image/webp".
4. Если он его находит, то возвращает ответ с этим файлом.
5. Если по uri /image-content/uploads/webp/test_image.png.webp его нет, тогда выполняется переадрессация на uri
/webp-gen.php?source=$document_root$request_uri&image-content=image-content&$args.
Разделы по адресу
/image-content/uploads/webp/ зеркально повторяют разделы
/image-content/uploads/ окромя наличия директории
webp.