2015-03-18 2 views
0

Я использую Nginx, чтобы (среди прочего) выступают в качестве прокси-сервера для Subsonic на моей локальной машине (т.е. Nginx имеет параметр proxy_pass перенаправлять весь трафик, направленный на subsonic.mydomain.com в сторону localhost:4040).Nginx: добавить параметр GET, если нет

При доступе к главному виду без каких-либо параметров GET (/home.view), Subsonic показывает страницу Random, со случайными альбомами из моей библиотеки. Недавно добавленную страницу можно получить, нажав ссылку на /home.view?listType=newest), но я бы хотел, чтобы она была по умолчанию, без использования кода Subsonic, поскольку это может сломаться при обновлении Subsonic.

Использование простого rewrite не похоже на решение, поскольку переписывание учитывает только URI без параметров GET. Поэтому переписывание ^/home.view$ как /home.view?listType=newest всегда будет отображать страницу с добавлением, даже когда я запрашиваю другие страницы.

Я хотел бы добавить параметр listType только в том случае, если он еще не присутствует в запросе, или добавить его таким образом, чтобы он превышал значение в запросе, если оно существует. Есть ли способ сделать это в Nginx?

Большое спасибо!

ответ

0

я решил его использовать что-то похожее на this question, а именно установка переменной в 0, а затем установить его в 1, если параметр существует, и, наконец, перезапись, если переменная еще 0.

+0

хорошо, но см. Http://wiki.nginx.org/IfIsEvil – SuddenHead

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

Я думал, что это работает но на самом деле Nginx отклонил файл конфигурации из-за «!». Вы уверены, что ваш синтаксис в порядке? – plgod

+0

Извините, отредактировано, попробуйте PLZ – SuddenHead

+0

Исправлено несколько часов назад, используя другой метод, см. Ответ, который я разместил. Спасибо за помощь, хотя! – plgod

Смежные вопросы