Trailing slash rewrite help
Kurt Hansen
khansen at charityweb.net
Sat Jul 18 09:28:12 MSD 2009
Hello,
I'm using nginx as a reverse proxy to a mod_perl backend server and am
having trouble with my rewrite rule in the case of a missing trailing
slash on a subdirectory.
For example, I want
www.example.com/action mapped to the example/action/ directory on the
mod_perl server.
However, what happens is that www.example.com/action is mapped to
example/example/action/
Here are the relevant location directives where the rewrite is done:
location /example/ {
# root html;
index index.htm;
rewrite ^/example(.*)/$ /example/$1/index.htm break;
proxy_redirect off;
proxy_pass http://cweb;
}
location / {
# root html;
index index.htm;
rewrite ^/$ /example/index.htm break;
rewrite ^/(.*) /example/$1 break;
proxy_pass http://cweb;
}
I think what is happening is that the rewrite comes out as
/example/action then nginx adds the trailing slash and it gets run
through the re-write again. I added the /example/ location directive so
at least the right pages are displayed, but the URL comes back to the
browser as www.example.com/example/action/
The nginx server is also an NFS server so the files reside on the nginx
server. I've tried an if (-d $request_filename) but that doesn't work.
Any help would be greatly appreciated.
Thanks,
Kurt Hansen
More information about the nginx
mailing list