Nginx rewrite 跳转规则

今天公司有个需求:

访问这个:xxx.com/m/courseDetail?courseId=227&courseType=4
跳转到这个:xxx.com/m/courseDetail/227?courseType=4

自己尝试了很久都没有实现,请教了别人才懂,特记录一下:

if ($uri ~ ^/m/courseDetail$) {
         rewrite ^/ $uri/$arg_courseId?courseType=$arg_courseType? redirect;

}

$uri                                 #不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。该值有可能和$request_uri 不一致。$request_uri是浏览器发过来的值。该值是rewrite后的值。例如做了internal redirects后。

$arg_PARAMETER    #这个变量包含GET请求中,如果有变量PARAMETER时的值。

另一种实现方式:

if ( $request_uri ~* “/m/courseDetail\?courseId=([0-9]+)&(.*)”) {
     set $mycouid $1;
     set $myque $2;
     rewrite .* /m/courseDetail/$mycouid?$myque? permanent;
}

总结:

rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址

rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数

rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数

猜你喜欢

转载自blog.csdn.net/weixin_35815578/article/details/80966728