nginxを書き直す必要がある

nginxを書き直す必要がある

次のような URL があります:

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

次のように書き直す必要があります。

index/123/456/789

「if」を使わずに。

これまで試したこと:

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

しかし、うまくいきません。何かアイデアはありますか?

答え1

簡単に答えると、 を使用せずにはできませんif

長い答えは正規表現ですrewrite構文は URI にのみ一致します。

次のようなことを試してください:

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

関連情報