Nginx 301 redirect inc。设置cookie

时间:2009-11-18 16:09:58

标签: cookies redirect query-string nginx

我正在寻找的是nginx检测到url具有查询字符串变量cid的能力。

例如www.adomain.com/froggy?cid=12&as=false(查询字符串可以独奏或与其他人混合,cid不一定是查询字符串中的第一个变量)

如果检测到cid,它必须发送一个带有变量tmp_cid的set cookie标头,为它提供从cid查询字符串变量中获取的值。

然后它必须发送301重定向以将用户发送到它所带来的相同URL但没有cid查询字符串变量,因此使用上面的示例url,它将重定向到www.adomain.com/froggy ?如= FALSE

我希望这是有道理的。

1 个答案:

答案 0 :(得分:8)

location / {

    set $cid '';

    if ( $query_string ~ "(.*)cid\=([0-9]+)(&?)(.*)" ) {
        set $args $1$4;
        set $cid $2;
    }

    if ( $args ~ (.+)&$ ) {
        set $args $1;
    }

    if ( $cid != '' ) {
        add_header Set-Cookie tmp_cid=$cid;
        rewrite ^(.*)$ $1 permanent;
    }

}