muss nginx neu schreiben

muss nginx neu schreiben

Ich habe URLs wie:

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

und ich muss sie ungefähr so ​​umschreiben:

index/123/456/789

ohne „if“ zu verwenden.

Bisher habe ich versucht:

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

Aber es funktioniert nicht. Irgendwelche Ideen?

Antwort1

Die kurze Antwort ist: Ohne ist dies nicht möglich if.

Die lange Antwort ist Regex in derrewriteDie Syntax stimmt nur mit der URI überein.

Versuchen Sie etwas wie Folgendes:

    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;
        }
    }

verwandte Informationen