Friday, January 21, 2011

nginx folder redirect

I'm trying redirect from an exact folder in nginx.conf

Given the URL: domain.com/path1/path2/path3

Redirect to: sub.domain.com/path1/path2/path3

Here's what I have so far:

location ~* ^/path1[\/?]$ {
    rewrite ^/(.*) http:sub.domain.com/$1 break;
}

I had it working with

location /path1 {
    rewrite ^/(.*) http:sub.domain.com/$1 break;
}

The problem with that is it also redirects a page like domain.com/path1moretext/someotherpath to sub.domain.com/path1moretext/someotherpath

Which is not what I want. (had to take out the "//" in the href code above because this is my first post, sorry).

  • location / {
    
      rewrite ^\/path1\/(.*)$ http://sub.domain.com/$1 last;
    
      // rest of config for root
    
    }
    

    I'm from an Apache background and I've just started using Nginx in earnest, I've struggled with the re-writes myself, but, I've used the above recently without apparent issue.

    : Accomplishes the same thing, thanks. Though I changed the rewrite to: rewrite ^\/path1\/(.*)$ http://sub.domain.com/path1/$1 break; Not sure of the difference between last and break yet. Something to do with a limit of 10 options when using location? I'm just recalling other documentation from memory here. Thanks!
  • location = /path1 {
      rewrite ^ http://sub.domain.com$uri permanent;
    }
    location /path1/ {
      rewrite ^ http://sub.domain.com$uri?$args permanent;
    }
    

    edit: also read this for information on last/break/permanent/redirect.

0 comments:

Post a Comment