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