ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Есть Аналог комбинирова нных RewriteCond Апача?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Есть Аналог комбинирова нных RewriteCond Апача?
  • From: Ilya Pirogov <iam.stalk@xxxxxxxxx>
  • Date: Tue, 16 Feb 2010 18:25:28 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:content-type; bh=sGpNudMQ+511xbUqkv7KNIl6wCjKlbd3NoE5MFM5m5g=; b=sH+vC0J3a/t5IEyuMhQOx90RXsN3I4QJ3rYeb6jRru+lAjgK0LDDpJSjqeHYoRyNgc IF1FoNjOR0uxI2yypT1YEiZ1OdrkGxSJx//r/paebUJEw72/i4bmbUvBLN5hPGP0fVSH CY8rnaEOcDcvyaz0PBuENNM16y2OloFS9hwg0=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=tFrLVT/JBjkmlFg45Tx3E4wT8K5a8VkgIW2wzJxu0ByNWX6V9be7jlPIHtUpImZakR fMTg+P9EqbUy669D69Fpx/P7GXXX9Ucg1J0JIQS6x3i/c69ouxq7jPh4JGoUx2ire3P1 fCmwDXYJsyZWZOiJxN2Nw4FOAHNi+gqWpDMWw=
  • In-reply-to: <f90e6d42496807ad6db04d8d3089d5cb.NginxMailingListRussian@xxxxxxxxxxxxxxx>
  • References: <f90e6d42496807ad6db04d8d3089d5cb.NginxMailingListRussian@xxxxxxxxxxxxxxx>

А если так попробовать:

    location /take {
        proxy_pass http://127.0.0.1:8080/take;

        if ($arg_that != "cat") {
            break;
        }

        if ($arg_tn !~ \d) {
            rewrite ^.*$ "/take?Tn=6&CL=0" permanent;
        }
    }


16 февраля 2010 г. 16:37 пользователь anyhow2 <nginx-forum@xxxxxxxx> написал:
При переносе сайта с Апача на Nginx (nginx - морда и статика, Апач остался для динамики на 127.0.0.1:8080) столкнулся с неустранимой проблемой :(
Было
           RewriteCond %{QUERY_STRING} ^.*That=cat.*$
           RewriteCond %{QUERY_STRING} !^.*Tn=\d.*$
           RewriteRule ^.* %{REQUEST_URI}?%{QUERY_STRING}&Tn=6&CL=0

То есть если в строке запроса стоит, например:
/take?That=cat&go=1
то надо было его дополнить до
/take?That=cat&go=1&Tn=6&CL=0

а если
1) /take?That=cat&Tn=3
или
2) /take?Tn=8&That=cat&go=yes

то оставить как есть

Пока придумал только регэксп для случая 1), когда в строке есть That=cat и может быть или не быть Tn=\d следом
          if ($QUERY_STRING ~* ^.*That=cat(?!.*Tn=[0-9]+).*$) {
               rewrite  .  "$URI?$QUERY_STRING&Tn=6&CL=0?"     permanent;
           }
Регэкспа для случая 2) когда в строке есть That=cat и может быть или не быть Tn=\d ДО, не нашел.

Пытался, следуя рекомендациям Игоря тут (http://markmail.org/message/yv6x3z66x3a5jdv2) написать извратный конфиг типа такого:
location /take {
           proxy_pass         http://127.0.0.1:8080/take;
           if ($QUERY_STRING ~* ^.*That=cat.*$) {
               rewrite ^.*$ /check_cat permanent;
           }
}
location /check_cat {
           set $APPEND1 "&Tn=6&CL=0";
           if ($QUERY_STRING ~* ^.*Tn=[0-9]+.*$) {
               set $APPEND1 "";
           }
           rewrite  ^.*$  "/take_cat?$QUERY_STRING$APPEND1?" permanent;
}
location /take_cat {
           proxy_pass         http://localhost:8080/take;
           proxy_redirect     http://localhost:8080/take     /take
}
имеет минусы. Приводит к куче редиректов внутри, судя по логам. и в результате в строке браузера видно

http://www.site.com/take_cat?That=cat&Tn=6&CL=0

а надо было получить

http://www.site.com/take?That=cat&Tn=6&CL=0

Можно ли вообще сделать такой редирект, как был у меня в Апаче?

И еще может можно было бы сделать регэксп с анализом на Tn=\d и до и после. Но насколько я знаю проверка типа
^.*(?<*Tn=[0-9]+.*)That=cat(?!.*Tn=[0-9]+).*$
невозможно, так как требует фиксированного числа символов для условия ?<

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


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.