Nginx重写触发下载

2 rewrite nginx

我正努力在nginx上创建一个简单的重写url.
我的配置如下所示:

location /foo/bar {
    rewrite ^/(.+)$ /index.php?p=$1 break;
}
Run Code Online (Sandbox Code Playgroud)

例如/foo/bar/baz应该/foo/bar/index.php?p=baz(当然在内部)

但是,通过访问的所有内容都会/foo/bar/触发位于根目录下的index.php的下载.我如何让它工作?

我也试过使用try_files但无法弄清楚如何排除/foo/bar/路径$uri.

Chu*_* Ma 10

更改

rewrite ^/(.+)$ /index.php?p=$1 break;
Run Code Online (Sandbox Code Playgroud)

rewrite ^/(.+)$ /index.php?p=$1 last;
Run Code Online (Sandbox Code Playgroud)

基于http://wiki.nginx.org/HttpRewriteModule#rewrite,

last - 完成当前重写指令的处理并重新启动该过程(包括重写),并搜索来自所有可用位置的URI匹配.

[编辑]使用break将保持在同一位置块内.在您的情况下,该位置块内没有其他规则.因此,默认情况下,nginx会将其作为文件请求提供.