Nginx 301 редирект вкл. установить cookie - PullRequest
3 голосов
/ 18 ноября 2009

я ищу, чтобы nginx обнаруживал, что URL имеет переменную строки запроса cid.

например, www.adomain.com/froggy?cid=12&as=false (строка запроса может быть одиночной или смешанной с другими, а cid не обязательно является первой переменной в строке запроса)

Если обнаружен cid, он должен отправить установленный заголовок cookie с переменной tmp_cid, передав ему значение, которое он принял из переменной строки запроса cid.

Затем он должен также отправить перенаправление 301, чтобы отправить пользователя по тому же URL-адресу, на который он пришел, но без переменной строки запроса cid, поэтому в приведенном выше примере URL-адрес перенаправит на www.adomain.com/froggy ? а = ложь

Надеюсь, это имеет смысл.

1 Ответ

8 голосов
/ 19 ноября 2009
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;
    }

}
...