rewrite or return for simple redirection

Maxim Dounin mdounin at mdounin.ru
Fri Nov 21 20:11:44 UTC 2014


Hello!

On Fri, Nov 21, 2014 at 12:06:54PM -0800, neubyr wrote:

> On Fri, Nov 21, 2014 at 11:33 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> > Hello!
> >
> > On Fri, Nov 21, 2014 at 11:21:40AM -0800, neubyr wrote:
> >
> > > I am trying to understand which option would result in more efficient
> > HTTP
> > > redirection. I am trying to redirect ^/address page to ^/contact page.
> > >
> > > Option 1:
> > > rewrite ^/address /contact permanent;
> > >
> > > Option 2:
> > > location ~ ^/address {
> > >   return 301 $scheme://$host/contact
> > > }
> > >
> > > Which option should be preferred? Both options involve regex and I am not
> > > sure which one will be faster. Are there any other better options?
> >
> >     location = /address {
> >         return 301 /contact;
> >     }
> >
> >
> >
> Thank you Maxim!! That's helpful. I should have used precise location match
> and relative redirect path.
> 
> Also, can something with following rewrite be converted to 'location and
> return' combination?
> 
> rewrite ^/members/(.*)         /users/$1
> 
> Or am I better with rewrite directive in this case? Appreciate any help.

For such cases rewrite is better, IMHO.  In some cases it may be a 
good idea to additionally isolate it with prefix location, like 
this:

    location /members/ {
        rewrite ^/members/(.*) /users/$1 redirect;
    }

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list