Nginx:如果不存在则添加 GET 参数
Nginx : add GET parameter if not present
我正在使用 Nginx(除其他外)在我的本地机器上充当 Subsonic 的代理(即 Nginx 有一个 proxy_pass
设置来重定向所有指向 [=11 的流量=] 朝向 localhost:4040
).
在没有任何 GET 参数的情况下访问主视图时 (/home.view
),Subsonic 显示随机页面,其中包含来自我的图书馆的随机专辑。通过单击 link 到 /home.view?listType=newest
) 可以访问最近添加的页面,但我希望它是默认设置,而不会弄乱 Subsonic 的代码,因为这会在更新 Subsonic 时中断。
使用简单的 rewrite
似乎不是解决方案,因为重写只考虑 URI,没有 GET 参数。因此,将 ^/home.view$
重写为 /home.view?listType=newest
将始终显示最近添加的页面,即使我请求其他页面也是如此。
我想仅在 listType
参数不存在于请求中时添加它,或者以这样的方式添加它,即如果它存在,它会被请求中的值覆盖。有没有办法在 Nginx 中做到这一点?
非常感谢!
location /home.view {
if ( $arg_listType = '') {
rewrite ^ /home.view?listType=newest last;
}
proxy_pass ....
....
}
我用类似this question的方法解决了它,即设置一个变量为0,如果参数存在则将其设置为1,最后如果变量仍然为0则重写。
我正在使用 Nginx(除其他外)在我的本地机器上充当 Subsonic 的代理(即 Nginx 有一个 proxy_pass
设置来重定向所有指向 [=11 的流量=] 朝向 localhost:4040
).
在没有任何 GET 参数的情况下访问主视图时 (/home.view
),Subsonic 显示随机页面,其中包含来自我的图书馆的随机专辑。通过单击 link 到 /home.view?listType=newest
) 可以访问最近添加的页面,但我希望它是默认设置,而不会弄乱 Subsonic 的代码,因为这会在更新 Subsonic 时中断。
使用简单的 rewrite
似乎不是解决方案,因为重写只考虑 URI,没有 GET 参数。因此,将 ^/home.view$
重写为 /home.view?listType=newest
将始终显示最近添加的页面,即使我请求其他页面也是如此。
我想仅在 listType
参数不存在于请求中时添加它,或者以这样的方式添加它,即如果它存在,它会被请求中的值覆盖。有没有办法在 Nginx 中做到这一点?
非常感谢!
location /home.view {
if ( $arg_listType = '') {
rewrite ^ /home.view?listType=newest last;
}
proxy_pass ....
....
}
我用类似this question的方法解决了它,即设置一个变量为0,如果参数存在则将其设置为1,最后如果变量仍然为0则重写。