проверка файла после изменения адреса

AlexsnderS nginx-forum at nginx.us
Mon Jun 1 16:19:39 UTC 2015


Здравствуйте!

Задача в следующем:
Поймать по регулярке адрес, по регулярке его превратить в путь к файлу. Если
файл есть на диске, то отдать его клиенту, если нет, то передать запрос в
index.php

#перехватываю запрос
location = ^/news.*\.jpg$ {
    #превращаю запрос в путь к файлу
    rewrite ^/news/[\w\-_]+/([\w\-_]+)\-(\d+x\d+x[p|i])-(\d+)\.jpg$
/data/cache/news/$3/$1-$2\.jpg break;
    #проверяю есть ли он на диске, если нет, то отдаю в index.php
}

location = ^/data/cache/news/.* {
    try_files $uri /index.php;
}

Например алгоритм такой:
1. Получаю запрос: /news/test/test-100x100xp-10.jpg
2. Сработал location
3. Этот запрос преобразовался в /data/cache/news/10/test-100x100xp.jpg
4. Проверка файла на наличие на диске
    4.1 Файл есть - отдаем клиенту
    4.2 Файла нет - отдаем обработку в index.php

Испробовал кучу вариантов, но так толком ничего и не добился. Помогите,
пожалуйста.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,259310,259310#msg-259310



Подробная информация о списке рассылки nginx-ru