Подскажите с правилом htaccess -> nginx

Jake Foley

Мой дом здесь!
Регистрация
14 Дек 2006
Сообщения
747
Реакции
395
Приветствую,

Файл .htaccess лежит в папке /images/resized/

Код:
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*) /images/resized/anySize.php?file=$1&s=thumb&a=false [QSA]
</IfModule>

Переделал его в правило под nginx

Код:
location /images/resized/ {
    if (!-e $request_filename){
    rewrite ^/(.*) /images/resized/anySize.php?file=$1&s=thumb&a=false;
    }
    }

Вместо того, чтобы отображать картинку - файл отдается на скачивание и картинка битая.

Не могли бы вы подсказать как правильно исправить и где ошибка ?
 
Сюда будут попадать запросы, которые содержат /images/resized/ - это не соответствует условиям задачи?

if (!-e $request_filename)
Используй try_files Для просмотра ссылки Войди или Зарегистрируйся

Код:
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*) /images/resized/anySize.php?file=$1&s=thumb&a=false [QSA]
элегантно превращается в
Код:
location / {
    try_files $uri /images/resized/anySize.php?file=$1&s=thumb&a=false;
}
 
Сюда будут попадать запросы, которые содержат /images/resized/ - это не соответствует условиям задачи?


Используй try_files Для просмотра ссылки Войди или Зарегистрируйся

Код:
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*) /images/resized/anySize.php?file=$1&s=thumb&a=false [QSA]
элегантно превращается в
Код:
location / {
    try_files $uri /images/resized/anySize.php?file=$1&s=thumb&a=false;
}


Попробовал ваш вариант, но вижу, что передается пустое значение в php скрипт, проверяю так: Для просмотра ссылки Войди или Зарегистрируйся
 
Код:
    location = /images/resized/anySize.php {
        # проксируем на backend
    }

    location ~ ^/images/resized/(.*)$ {
        try_files $uri /images/resized/anySize.php?file=$1&s=thumb&a=false;
    }
 
C живого проекта, генерим превью
Код:
location ~* /thumbs/(.*)$ {
        try_files $uri $uri/ /index.php?$query_string;
    }

Т.е. с локейшеном намудрил, надо как-то так
Код:
location ~ ^/images/resized/(.*)$ {
        try_files $uri /images/resized/anySize.php?file=$query_string&s=thumb&a=false;
    }
 
C живого проекта, генерим превью
Т.е. с локейшеном намудрил, надо как-то так
Код:
location ~ ^/images/resized/(.*)$ {
        try_files $uri /images/resized/anySize.php?file=$query_string&s=thumb&a=false;
    }

Не выходит, мне скрипт говорит что я не передаю расширение файла, хотя я конечно же его передаю
 
Хм, в битом jpg файле код php скрипта :)
 
Хм, в битом jpg файле код php скрипта :)
Это означает что запрос к /images/resized/anySize.php снова попадает в location ~ ^/images/resized/(.*)$,
а должен попадать в тот location, где у тебя proxy_pass или fastcgi_pass.
В том примере вместо # проксируем на backend там нужен вызов proxy_pass или fastcgi_pass.
 
Назад
Сверху