А если так попробовать:<div><br></div><div><div>    location /take {</div><div>        proxy_pass <a href="http://127.0.0.1:8080/take" target="_blank">http://127.0.0.1:8080/take</a>;</div><div><br></div><div>        if ($arg_that != &quot;cat&quot;) {</div>

<div>            break;</div><div>        }</div><div><br></div><div>        if ($arg_tn !~ \d) {</div><div>            rewrite ^.*$ &quot;/take?Tn=6&amp;CL=0&quot; permanent;</div><div>        }</div><div>    }</div><div>

<br></div><br><div class="gmail_quote">16 февраля 2010 г. 16:37 пользователь anyhow2 <span dir="ltr">&lt;<a href="mailto:nginx-forum@nginx.us">nginx-forum@nginx.us</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

При переносе сайта с Апача на Nginx (nginx - морда и статика, Апач остался для динамики на <a href="http://127.0.0.1:8080" target="_blank">127.0.0.1:8080</a>) столкнулся с неустранимой проблемой :(<br>
Было<br>
            RewriteCond %{QUERY_STRING} ^.*That=cat.*$<br>
            RewriteCond %{QUERY_STRING} !^.*Tn=\d.*$<br>
            RewriteRule ^.* %{REQUEST_URI}?%{QUERY_STRING}&amp;Tn=6&amp;CL=0<br>
<br>
То есть если в строке запроса стоит, например:<br>
/take?That=cat&amp;go=1<br>
то надо было его дополнить до<br>
/take?That=cat&amp;go=1&amp;Tn=6&amp;CL=0<br>
<br>
а если<br>
1) /take?That=cat&amp;Tn=3<br>
или<br>
2) /take?Tn=8&amp;That=cat&amp;go=yes<br>
<br>
то оставить как есть<br>
<br>
Пока придумал только регэксп для случая 1), когда в строке есть That=cat и может быть или не быть Tn=\d следом<br>
           if ($QUERY_STRING ~* ^.*That=cat(?!.*Tn=[0-9]+).*$) {<br>
                rewrite  .  &quot;$URI?$QUERY_STRING&amp;Tn=6&amp;CL=0?&quot;     permanent;<br>
            }<br>
Регэкспа для случая 2) когда в строке есть That=cat и может быть или не быть Tn=\d ДО, не нашел.<br>
<br>
Пытался, следуя рекомендациям Игоря тут (<a href="http://markmail.org/message/yv6x3z66x3a5jdv2" target="_blank">http://markmail.org/message/yv6x3z66x3a5jdv2</a>) написать извратный конфиг типа такого:<br>
location /take {<br>
            proxy_pass         <a href="http://127.0.0.1:8080/take" target="_blank">http://127.0.0.1:8080/take</a>;<br>
            if ($QUERY_STRING ~* ^.*That=cat.*$) {<br>
                rewrite ^.*$ /check_cat permanent;<br>
            }<br>
}<br>
location /check_cat {<br>
            set $APPEND1 &quot;&amp;Tn=6&amp;CL=0&quot;;<br>
            if ($QUERY_STRING ~* ^.*Tn=[0-9]+.*$) {<br>
                set $APPEND1 &quot;&quot;;<br>
            }<br>
            rewrite  ^.*$  &quot;/take_cat?$QUERY_STRING$APPEND1?&quot; permanent;<br>
}<br>
location /take_cat {<br>
            proxy_pass         <a href="http://localhost:8080/take" target="_blank">http://localhost:8080/take</a>;<br>
            proxy_redirect     <a href="http://localhost:8080/take" target="_blank">http://localhost:8080/take</a>     /take<br>
}<br>
имеет минусы. Приводит к куче редиректов внутри, судя по логам. и в результате в строке браузера видно<br>
<br>
<a href="http://www.site.com/take_cat?That=cat&amp;Tn=6&amp;CL=0" target="_blank">http://www.site.com/take_cat?That=cat&amp;Tn=6&amp;CL=0</a><br>
<br>
а надо было получить<br>
<br>
<a href="http://www.site.com/take?That=cat&amp;Tn=6&amp;CL=0" target="_blank">http://www.site.com/take?That=cat&amp;Tn=6&amp;CL=0</a><br>
<br>
Можно ли вообще сделать такой редирект, как был у меня в Апаче?<br>
<br>
И еще может можно было бы сделать регэксп с анализом на Tn=\d и до и после. Но насколько я знаю проверка типа<br>
^.*(?&lt;*Tn=[0-9]+.*)That=cat(?!.*Tn=[0-9]+).*$<br>
невозможно, так как требует фиксированного числа символов для условия ?&lt;<br>
<br>
Posted at Nginx Forum: <a href="http://forum.nginx.org/read.php?21,55036,55036#msg-55036" target="_blank">http://forum.nginx.org/read.php?21,55036,55036#msg-55036</a><br>
<br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://nginx.org/mailman/listinfo/nginx-ru</a><br>
</blockquote></div><br></div>