simple rewrite rules

Igor Sysoev igor at sysoev.ru
Sun May 22 09:21:56 MSD 2011


On Sun, May 22, 2011 at 03:41:59AM +0300, Adam Benayoun wrote:
> Hello everyone,
> I'm trying to setup some basic rewrite rules in nginx (I'm sorry if I may be
> asking obvious question but I moved my servers from apache to nginx and I
> can't figure out how to write simple rewrite rules in nginx).
> 
> This is what I am trying to achieve:
> 
> I have a URL with the following arguments:
> 
> http://www.domain.com/browse/category
> 
> What I want to achieve is:
> - When someone try to reach http://www.domain.com/category - it will serve
> the url http://www.domain.com/browse/category internally (no 301 redirect).
> - When someone will try to reach http://www.domain.com/browse/category it
> will redirect externally (301) to http://www.domain.com/category
> 
> I've added 2 rewriterule at first but somehow only the first rule works, the
> second won't work:
> 
>         rewrite ^/browse/(.*) http://www.domain.com/$1 permanent;
>         rewrite ^/(category1|category2|category3|category4)$    /browse/$1
> last;
> 
> Thanks (and sorry for asking a somewhat newbie question!)
> 
> p.s: yes, I've read this http://wiki.nginx.org/HttpRewriteModule

You should not read anyting about rewrite module. It's better to forget
about it. You should think using locations.

     location /category1/
         #depending on processing method:

         # FastCGI
         fastcgi_pass    backend;
         fatscgi_param   SCRIPT_FILENMAE   /path/to/browse;

         # proxying
         proxy_pass    http://backend/browse/

         # static files
         root   /path/to/browse;
     }

     location /browse/ {
         rewrite ^/browse/(.*)  /$1  permanent;
     }


-- 
Igor Sysoev



More information about the nginx mailing list