Как переписать реврайты под nginx?

Доброго времени суток.
Прошу помощи в переписывании реврайтов под nginx.
nginx version: nginx/1.4.1
Исходный кусок правил из .htaccess выглядит так:

RewriteRule ^images/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=square
RewriteRule ^images/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=normal
RewriteRule ^images/w/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=square&t=w
RewriteRule ^images/h/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=square&t=h
RewriteRule ^images/h/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=normal&t=h

RewriteCond %{REQUEST_URI} /images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]{3})([0-9,a-z,A-Z,-_]+)\.jpg
RewriteCond /var/www/html/_cache/norm_cache_s%1w/%2/%2%3.jpg -f
RewriteRule ^images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]{3})([0-9,a-z,A-Z,-_]+)\.jpg http://host.info/_cache/norm_cache_s$1w/$2/$2$3.jpg [L]

RewriteRule ^images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$ media.php?size=$1&id=$2&image=normal&t=w


Свой вариант (не взлетел):

location ~ "/images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]{3})([0-9,a-z,A-Z,-_]+)\.jpg"  {
rewrite "/images/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$" /media.php?size=$1&id=$2&image=square;
rewrite "/images/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$" /media.php?size=$1&id=$2&image=normal;
rewrite "/images/w/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$" /media.php?size=$1&id=$2&image=square&t=w;
rewrite "/images/h/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$" /media.php?size=$1&id=$2&image=square&t=h;
rewrite "/images/h/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+).jpg$" /media.php?size=$1&id=$2&image=normal&t=h;

         if (!-f /var/www/_cache/norm_cache_s$1w/$2$2.$3.jpg) {
rewrite "/images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]{3})([0-9,a-z,A-Z,-_]+)\.jpg" http://st.host.info/_cache/norm_cache_s$1w/$2/$2$3.jpg break;
                        }
                        try_files "/_cache/norm_cache_s$1/$2/$2$3.jpg" /index-$1_$2_$2_$3_$4.html;
                }


Пробовал различные конвертеры ( convertor ), однако они в данной ситуации не слишком помогли.

Заранее спасибо.
  • Вопрос задан
  • 2653 просмотра
Решения вопроса 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Мне кажется, что кавычки излишни. Попробуйте отделить все правила внутрь одного location и сначала отладить первое правило, затем второе и т.д.

location ~ /images/w/norm/([0-9]{2,4})/([0-9,a-z,A-Z,-_]{3})([0-9,a-z,A-Z,-_]+)\.jpg  {
  rewrite ^/images/([0-9]{2,4})/([0-9,a-z,A-Z,-_]+)\.jpg$ /media.php?size=$1&id=$2&image=square;
}

У Сысоева всё хорошо расписано ведь nginx.org/ru/docs/http/ngx_http_rewrite_module.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы