Welcome! Log In Create A New Profile

Advanced

Re: Как правильно сделать редирект

September 16, 2011 08:36AM
On Fri, Sep 16, 2011 at 01:37:54PM +0300, Alexander Moskalenko wrote:
> Игорь, если подобный rewrite находится в секции server это хуже чем через
> location ?
>
> редирект вот такой:
> rewrite ^(\/+[\w\/-]*[^\/])$ $scheme://$host$1/ permanent;

Большой разницы нет.

Я предпочитаю не использоватоь rewrite вообще и не использовать
регулярные выражения в location'ах. Или же локализовывать их
использование внутри location'ах с префиксом.

> 2011/9/16 Igor Sysoev <igor@sysoev.ru>
>
> > On Fri, Sep 16, 2011 at 04:17:52PM +0700, Игорь Вавржин wrote:
> >
> > > >>>>>>> On Fri, Sep 16, 2011 at 11:55:01AM +0700, Игорь Вавржин wrote:
> > > >>>>>>>> Не подскажите как правильнее сделать редирект со страниц у
> > которых
> > > >>>>>>>> REQUEST_URI не заканчиватся на / и у которых в урл после
> > последнего
> > > >>>>>>>> слэша нет символа "."
> > > >>>>>>>>
> > > >>>>>>>> / на такой же урл но со слэшем на конце?
> > > >>>>>>>>
> > > >>>>>>>> Примеры:
> > > >>>>>>>> stite.com/page -> stite.com/page/
> > > >>>>>>>> stite.com/page/ -> нет редиректа
> > > >>>>>>>> stite.com/page.html -> нет редиректа
> > > >>>>>>>> stite.com/image.jpg -> нет редиректа
> > > >>>>>>> Если это статические файлы и каталоги, то nginx делает это
> > автоматом.
> > > >>>>>>>
> > > >>>>>> Нет это не статика.
> > > >>>>> А что должно уходить на бэкенд ?
> > > >>>>>
> > > >>>>>
> > > >>>> У меня пока как-то вот так выглядит:
> > > >>>>
> > > >>>> location ~* /[^/\.]+$ {
> > > >>>> rewrite ^(.*)$ http://$http_host$1/ permanent;
> > > >>>> }
> > > >>> Да, можно так. Единственное, я бы отделил это от статики и вынес бы
> > > >>> в location, который работает с бэкендом:
> > > >>>
> > > >>> location / {
> > > >>>
> > > >>> location ~ (?<URL>^.*/[^/.]+$) {
> > > >>> return 301 http://$host$url/$is_args$args;
> > > >>> }
> > > >>>
> > > >>> location / {
> > > >>> proxy_pass ...
> > > >>> # or fastcgi_pass ...
> > > >>> }
> > > >>> }
> > > >>>
> > > >>> location /images/ {
> > > >>> }
> > > >>>
> > > >> Игорь спасибо за подсказку насчет переноса location. Объясните
> > > >> пожалуйста что означает вот эта часть в регулярном выражении:
> > > >> (?<URL>
> > > > Именованное выделение, вот тут подробнее, хотя и не про location:
> > > > http://nginx.org/en/docs/http/server_names.html#regex_names
> > > >
> > > Ух ты :) классная штука. Игорь а не подскажите вот в такой записи:
> > >
> > > location ~ \.php$ {
> > > location ~ (?<URL>^.*/[^/.]+$) {
> > > return 301 http://$host$url/$is_args$args;
> > > }
> > > }
> > >
> > > Воторой location проверяет соответствие с каким location?
> > > Просто выше по конфигу стоит :
> > >
> > > location / {
> > > index index.php;
> > > try_files $uri $uri/ /index.php?$args;
> > > }
> > > ну и дальше:
> > > location ~ \.php$ {
> > > location ~ (?<URL>^.*/[^/.]+$) {
> > > return 301 http://$host$url/$is_args$args;
> > > }
> > > }
> > >
> > > И соответственно в location \.php попадает после внутреннего редиректа.
> > > Так вот во внутреннем location соответсвие идет покакому location -
> > > изначальному или после редиректа? И сразу следующий вопрос: если идет по
> > > изначальному, то как достать текущий location который после редиректа
> > > проихошел?
> >
> > Так работать не будет.
> > Тогда только так:
> >
> > location / {
> > index index.php;
> > try_files $uri $uri/ /index.php?$args;
> > }
> >
> > location ~ (?<URL>^.*/[^/.]+$) {
> > return 301 http://$host$url/$is_args$args;
> > }
> >
> > location ~ \.php$ {
> > ...
> > }


--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Как правильно сделать редирект

Игорь Вавржин September 16, 2011 12:56AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 01:50AM

Re: Как правильно сделать редирект

Игорь Вавржин September 16, 2011 02:10AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 02:12AM

Re: Как правильно сделать редирект

Игорь Вавржин September 16, 2011 02:36AM

Re[2]:

Andrey Repin September 16, 2011 12:36PM

Re: Как правильно сделать редирект

Gena Makhomed September 16, 2011 01:28PM

Re: Как правильно сделать редирект

Игорь Вавржин September 16, 2011 03:44AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 04:36AM

Re: Как правильно сделать редирект

Игорь Вавржин September 16, 2011 04:50AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 04:58AM

Re: Как правильно сделать редирект

Игорь Вавржин September 16, 2011 05:20AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 05:32AM

Re: Как правильно сделать редирект

Alexander Moskalenko September 16, 2011 06:40AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 08:36AM

Re: Как правильно сделать редирект

Alexander Moskalenko September 16, 2011 08:50AM

Re: Как правильно сделать редирект

Igor Sysoev September 16, 2011 09:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 187
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready