URI re-mapping using try_files

Francis Daly francis at daoine.org
Thu Oct 11 16:57:47 UTC 2012


On Thu, Oct 11, 2012 at 09:19:23AM -0400, mrtn wrote:

Hi there,

> I use nginx to serve static html pages to users, and in particular, I want
> users who visit 'www.example.com/public/doc/abc123?para=data' to be served
> with the file '/home/www/example/public/doc/abc123/abc123.html' on the
> server, but 'www.example.com/public/doc/abc123?para=data' stays in the
> user's browser address bar.

For this sort of thing, "rewrite" (http://nginx.org/r/rewrite) is probably
the directive you want.

        rewrite (.*)/(.*) $1/$2/$2.html break;

can do what you want in this case.

What do you want to happen if the user asks for any of:

http://www.example.com/public/doc/abc123
http://www.example.com/public/doc/abc123?para=nodata
http://www.example.com/public/doc/abc123/abc123.html
http://www.example.com/public/doc/one/two

The rewrite directive above may or may not do what you want for those.

> So there are two issues here: 1. map URI pattern '/public/doc/blah' to file
> '/home/www/example/public/doc/blah/blah.html' on the server; 2. keep query
> string '?parap=data' in the address bar.

1) is in the rewrite (or any similar configuration which maps url to file)

2) is by virtue of not doing an external rewrite, which is a redirection.

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list