Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка файла после изменения адреса ngnix
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Проверка файла после изменения адреса ngnix

Страниц (1): [1]
 

1. haZe - 02 Июня, 2015 - 10:15:55 - перейти к сообщению
Здравствуйте!

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

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


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

Испробовал кучу вариантов, но так толком ничего и не добился. Помогите, пожалуйста.
2. DeepVarvar - 02 Июня, 2015 - 10:52:16 - перейти к сообщению
Заверни пых в именованый локейшн и повесь его на фалбек от 404.
3. haZe - 02 Июня, 2015 - 11:25:15 - перейти к сообщению
DeepVarvar пишет:
Заверни пых в именованый локейшн и повесь его на фалбек от 404.

Спасибо! Вы не могли бы ответить более развернуто. Как это сделать в апаче я понимаю, а вот с ngnix работаю впервые. Тут совсем другая логика какаято. Я запутан. Недовольство, огорчение
4. MiksIr - 02 Июня, 2015 - 13:27:44 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2. location /news/test/ {
  3.    location ~ /([\w\-_]+)\-(\d+x\d+x[p|i])-(\d+)\.jpg$ {
  4.         alias /path/on/disk/data/cache/news/$3/$1-$2.jpg;
  5.         try_files $uri /index.php;
  6.    }
  7. }
  8.  
5. LIME - 02 Июня, 2015 - 14:29:02 - перейти к сообщению
https://youtu[dot]be/fcG-7k20oG8
почему надо делать так как MiksIr
ТС будет полезно
6. haZe - 02 Июня, 2015 - 16:07:50 - перейти к сообщению
Ура! Победа! Два дня с этим маялся! Спасибо огромное!!!
(Добавление)
LIME пишет:
https://youtu[dot]be/fcG-7k20oG8
почему надо делать так как MiksIr
ТС будет полезно


Спасибо! Я посмотрел, очень полезно!

 

Powered by ExBB FM 1.0 RC1