Having trouble with the PCRE syntax
Maxim Dounin
mdounin at mdounin.ru
Fri Mar 11 20:33:06 MSK 2011
Hello!
On Fri, Mar 11, 2011 at 10:01:03AM -0500, strike wrote:
> Hi,
>
> would anybody please tell me what I'm doing wrong here?
>
> location ~* ^/(forum|forums|board)/? {
> rewrite ^/([^/]*)/*(.*) http://forum.my_domain.com/$2
> permanent;
> }
>
> I'd like to make it redirect visitors from
> http://www.my_domain.com/forum (note: there's no trailing slash),
> http://www.my_domain.com/forum/, http://www.my_domain.com/forums (again,
> there's no trailing slash here), http://www.my_domain.com/forums/,
> http://www.my_domain.com/board (...yep) and
> http://www.my_domain.com/board/ to http://forum.my_domain.com/. Neither
> the path (except "forum"/"forums"/"board") nor the query (if there's
> one) should get cut off. It's working so far, but it also redirects
> visitors from ex. http://www.my_domain.com/forumfoobar/, which isn't
> what I want. :-(
Correct regexp-based solution would be
location ~* ^/(?:forum|forums|board)(?:/|$) {
rewrite ^/[^/]*/*(.*) http://forum.my_domain.com/$2 permanent;
}
But recommended way is to avoid regexp-based solutions without
real need. It's much simplier and much more scalable to write
configuration with normal static locations, i.e.
location = /forum {
rewrite ^ http://forum.my_domain.com/ permanent;
}
location /forum/ {
rewrite ^/forum/(.*) http://forum.my_domain.com/$1 permanent;
}
location = /board {
rewrite ^ http://forum.my_domain.com/ permanent;
}
location /board/ {
rewrite ^/board/(.*) http://forum.my_domain.com/$1 permanent;
}
This way you'll save yourself a headache. As a side effect - it's
faster.
Maxim Dounin
More information about the nginx
mailing list