Quick question

Igor Sysoev is at rambler-co.ru
Wed Mar 18 22:36:16 MSK 2009


On Wed, Mar 18, 2009 at 12:33:15PM -0700, mike wrote:

> well, i did it this way, and it seems to work...
> 
> rewrite ^/sites/foo/index.php$ http://foo.com/ permanent;
> rewrite ^/sites/coolsw(|/)$ http://foo.com/ permanent;
> 
> # kill it from search engines
> rewrite ^/sites/foo/(.*)$ /kill last;
> location /kill {
>         return 404;
> }

However, it's better to runs these rewrites under

      location /sites/foo/ {
           rewrite  ^/sites/foo/index.php$ http://foo.com/ permanent;
           return   404;
      }

      location /sites/coolsw {
           rewrite  ^/sites/coolsw(|/)$ http://foo.com/ permanent;
      }

> 2009/3/18 Igor Sysoev <is at rambler-co.ru>:
> > On Wed, Mar 18, 2009 at 12:06:36PM -0700, mike wrote:
> >
> >> rewrites happen before location {} blocks are considered (if the
> >> rewrite is on a global level) correct?
> >>
> >> so
> >>
> >> location /foo {
> >>   this will never be computed
> >> }
> >>
> >> rewrite /foo/bar /somethingelse permanent;
> >>
> >> That's at least what it seems to me, unless I'm missing something.
> >>
> >> It doesn't seem like ^~ ~* etc seem to matter either. Or is it all
> >> depending on the order in the config file?
> >
> > Yes, as in Apache rewrites on server level run before location search.
> >
> > Then (*) nginx chooses a location, then nginx runs rewrites inside
> > the location. If any rewrite is matched and it has not "break" flags,
> > then nginx chooses a location again, i.e, goes to (*).
> > This cycle may run no more than 10 times.
> >
> >
> > --
> > Igor Sysoev
> > http://sysoev.ru/en/
> >
> >

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list