需要重写 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;
        }
    }

相关内容