Игорь, если подобный rewrite находится в секции server это хуже чем через location ?<div><br></div><div>редирект вот такой:</div><div>rewrite ^(\/+[\w\/-]*[^\/])$    $scheme://$host$1/ permanent;<br><br><div class="gmail_quote">
2011/9/16 Igor Sysoev <span dir="ltr"><<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div>
<div class="h5">On Fri, Sep 16, 2011 at 04:17:52PM +0700, Игорь Вавржин wrote:<br>
<br>
> >>>>>>> On Fri, Sep 16, 2011 at 11:55:01AM +0700, Игорь Вавржин wrote:<br>
> >>>>>>>> Не подскажите как правильнее сделать редирект со страниц у которых<br>
> >>>>>>>> REQUEST_URI не заканчиватся на / и у которых в урл после последнего<br>
> >>>>>>>> слэша нет символа "."<br>
> >>>>>>>><br>
> >>>>>>>> / на такой же урл но со слэшем на конце?<br>
> >>>>>>>><br>
> >>>>>>>> Примеры:<br>
> >>>>>>>> <a href="http://stite.com/page" target="_blank">stite.com/page</a> ->     <a href="http://stite.com/page/" target="_blank">stite.com/page/</a><br>
> >>>>>>>> <a href="http://stite.com/page/" target="_blank">stite.com/page/</a> ->     нет редиректа<br>
> >>>>>>>> <a href="http://stite.com/page.html" target="_blank">stite.com/page.html</a> ->     нет редиректа<br>
> >>>>>>>> <a href="http://stite.com/image.jpg" target="_blank">stite.com/image.jpg</a> ->     нет редиректа<br>
> >>>>>>> Если это статические файлы и каталоги, то nginx делает это автоматом.<br>
> >>>>>>><br>
> >>>>>> Нет это не статика.<br>
> >>>>> А что должно уходить на бэкенд ?<br>
> >>>>><br>
> >>>>><br>
> >>>> У меня пока как-то вот так выглядит:<br>
> >>>><br>
> >>>> location ~* /[^/\.]+$ {<br>
> >>>>            rewrite ^(.*)$ http://$http_host$1/ permanent;<br>
> >>>> }<br>
> >>> Да, можно так. Единственное, я бы отделил это от статики и вынес бы<br>
> >>> в location, который работает с бэкендом:<br>
> >>><br>
> >>> location / {<br>
> >>><br>
> >>>       location ~ (?<URL>^.*/[^/.]+$) {<br>
> >>>           return   301  http://$host$url/$is_args$args;<br>
> >>>       }<br>
> >>><br>
> >>>       location / {<br>
> >>>           proxy_pass  ...<br>
> >>>           # or fastcgi_pass  ...<br>
> >>>       }<br>
> >>> }<br>
> >>><br>
> >>> location /images/ {<br>
> >>> }<br>
> >>><br>
> >> Игорь спасибо за подсказку насчет переноса location. Объясните<br>
> >> пожалуйста что означает вот эта часть в регулярном выражении:<br>
> >> (?<URL><br>
> > Именованное выделение, вот тут подробнее, хотя и не про location:<br>
> > <a href="http://nginx.org/en/docs/http/server_names.html#regex_names" target="_blank">http://nginx.org/en/docs/http/server_names.html#regex_names</a><br>
> ><br>
> Ух ты :) классная штука. Игорь а не подскажите вот в такой записи:<br>
><br>
> location ~ \.php$ {<br>
>          location ~ (?<URL>^.*/[^/.]+$) {<br>
>              return   301  http://$host$url/$is_args$args;<br>
>          }<br>
> }<br>
><br>
> Воторой location проверяет соответствие с каким location?<br>
> Просто выше по конфигу стоит :<br>
><br>
> location / {<br>
>          index index.php;<br>
>          try_files $uri $uri/ /index.php?$args;<br>
> }<br>
> ну и дальше:<br>
> location ~ \.php$ {<br>
>          location ~ (?<URL>^.*/[^/.]+$) {<br>
>              return   301  http://$host$url/$is_args$args;<br>
>          }<br>
> }<br>
><br>
> И соответственно в location \.php попадает после внутреннего редиректа.<br>
> Так вот во внутреннем location соответсвие идет покакому location -<br>
> изначальному или после редиректа? И сразу следующий вопрос: если идет по<br>
> изначальному, то как достать текущий location который после редиректа<br>
> проихошел?<br>
<br>
</div></div>Так работать не будет.<br>
Тогда только так:<br>
<div class="im"><br>
location / {<br>
    index index.php;<br>
    try_files $uri $uri/ /index.php?$args;<br>
}<br>
<br>
</div><div class="im">location ~ (?<URL>^.*/[^/.]+$) {<br>
    return   301  http://$host$url/$is_args$args;<br>
}<br>
<br>
</div>location ~ \.php$ {<br>
    ...<br>
<div class="im">}<br>
<br>
<br>
--<br>
Игорь Сысоев<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
_______________________________________________<br>
</div><div><div></div><div class="h5">nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
</div></div></blockquote></div><br></div>