Welcome! Log In Create A New Profile

Advanced

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

Alexander Moskalenko
September 16, 2011 06:40AM
Игорь, если подобный rewrite находится в секции server это хуже чем через
location ?

редирект вот такой:
rewrite ^(\/+[\w\/-]*[^\/])$ $scheme://$host$1/ permanent;

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
>
_______________________________________________
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: 219
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