Nginx:如果不存在则添加GET参数

时间:2015-03-18 06:32:55

标签: nginx

我正在使用Nginx(除其他外)在我的本地计算机上充当Subsonic的代理(即Nginx有proxy_pass设置来重定向指向subsonic.mydomain.com的所有流量朝着localhost:4040)。

在没有任何GET参数(/home.view)的情况下访问主视图时,Subsonic会显示Random页面,其中包含来自我的库的随机相册。单击指向/home.view?listType=newest的链接可以访问最近添加的页面,但我希望它是默认的,不会弄乱Subsonic的代码,因为这会在更新Subsonic时中断。

使用简单的rewrite似乎不是一个解决方案,因为重写只考虑URI,而没有GET参数。因此,将^/home.view$重写为/home.view?listType=newest将始终显示最近添加的页面,即使我请求其他页面也是如此。

我想添加listType参数,只要它在请求中不存在,或者添加它以使其被请求中的值覆盖(如果存在)。有没有办法在Nginx中做到这一点?

非常感谢!

2 个答案:

答案 0 :(得分:0)

location /home.view {
    if ( $arg_listType = '') {
        rewrite ^ /home.view?listType=newest last;
    }
    proxy_pass ....
    ....
}

答案 1 :(得分:0)

我使用与this question类似的东西解决了它,即将变量设置为0,然后在参数存在时将其设置为1,最后在变量仍为0时重写。