I'm struggling with creating a simple rewrite url on nginx.
My configuration looks like this:
location /foo/bar {
rewrite ^/(.+)$ /index.php?p=$1 break;
}
E.g. /foo/bar/baz should become /foo/bar/index.php?p=baz (internally of course)
However, everything accessed through /foo/bar/ triggers a download of an index.php located at the root. How do I get this to work ?
I've also tried using try_files but can't figure out how to exclude the /foo/bar/ path from $uri.
Change
rewrite ^/(.+)$ /index.php?p=$1 break;
to
rewrite ^/(.+)$ /index.php?p=$1 last;
Based on http://wiki.nginx.org/HttpRewriteModule#rewrite,
last - completes processing of current rewrite directives and restarts the process (including rewriting) with a search for a match on the URI from all available locations.
[Edit] Using break will stay inside the same location block. In your case, there is no other rules inside that location block. So by default, nginx will serve that as a file request.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With