precisa reescrever nginx

1

Estou tendo URLs como:

index.php?q=123&w=456&e=789

e preciso reescrevê-los em algo como:

index/123/456/789

sem usar "if".

Até agora eu tentei:

location / {
    rewrite ^/index.php\?q=(.*)&w=(.*)&e=(.*)$ /index/$1/$2/$3;
}

Mas isso não funciona. Alguma idéia?

    
por dobermaster 28.08.2012 / 09:41

1 resposta

1

A resposta curta é que você não pode sem usar if .

A resposta longa é regex na sintaxe rewrite que corresponde apenas ao URI.

Tente algo assim:

    location /index.php {
        if ($args ~ "^q=(.*)&w=(.*)&e=(.*)") {
            set $arg_q $1;
            set $arg_w $2;
            set $arg_e $3;
            rewrite_log on;
        rewrite ^ /index/$arg_q/$arg_w/$arg_e last;
        }
    }
    
por 28.08.2012 / 10:41