LINUX.ORG.RU
ФорумAdmin

[nginx] проверка нескольких условий в if

 


0

0

Условия задачи: если человек приходит на урлу http://site1.com/ либо http://site1.com/index.php , то он получает "http://site1.com/index.php". Если он запросил http://site1.com/en/.* , то получает то, что запросил. Если запрашивает что-то другое (не из каталога /en/, и не index.php), то должен делаться реврайт

 rewrite ^(/.*) http://site2.com$1 ;
Проблема в том что не могу понять как в if сделать проверку нескольких условий, объединенных логическим И/ИЛИ. Сейчас приходится использовать кривые костыли:
                set $flag 0;
                if ($uri !~ /en/.*) {
                        set $flag 1;
                }
                if ($uri ~ .*index.php){
                        set $flag 0;
                }
                if ($uri = /){
                        set $flag 0;
                }
                if ($flag = 1){
                        rewrite ^(/.*) http://site2.com$1 ;
                }
Внимание, вопрос! Есть ли возможность сделать это красивее (например обьединить несколько условий в один if), или это единственный возможный вариант?

★☆☆☆

Ответ на: комментарий от Zhbert

Есть ли возможность сделать это красивее (например обьединить несколько условий в один if)

if (x==1 && y!=9)
{
}

if (x==1 || y!=9)
{
}
Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert
                if ($uri ~ .*index.php || $uri = /){
                        set $flag 0;
                }

Выдает:

[root@dld /usr/local/etc/nginx/vhosts]# nginx -t
[emerg]: invalid condition "$uri" in /usr/local/etc/nginx/vhosts/_site.com.conf:19
configuration file /usr/local/etc/nginx/nginx.conf test failed

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

Ну мб я и не прав. Просто посмотрел, что синтаксис сишный, а там вроде как во всех подобных языках структуры подобные прокатывают.

Zhbert ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.