переключение между версиями сайта

Nikolay nginx-forum at nginx.us
Tue Jun 25 13:31:02 UTC 2013


Есть обычная и моюильная версии сайта, необходимо сделать так, чтобы
мобильные клиенты автоматически заворачивались на мобильную версию, но имели
возможность нажать кнопку "Полная версия" (https://domain.tld/?full) и
перейти на полную версию. Так же необходимо чтобы они могли нажать кнопку
"Мобильная версия" (https://domain.tld/?mobile) и перейти на мобильную.
Делаю так:

   server {
        listen *:80;
        server_name domain.tld;
        access_log /var/log/nginx/http-domain.tld-access main ;
        location / {
                if ($scheme = "http"){
                        rewrite ^(.*) https://$host$1 permanent;
                }
                }
        }

   server {
...
...
...
#mobile redirect
        if ($http_user_agent ~* "(Chrome|acer\
s100|android|archos5|blackberry9500|blackberry9530|blackberry9550|blackberry\
9800|cupcake|docomo\ ht\-03a|dream|htc\ hero|htc\
magic|htc_dream|htc_magic|incognito|ipad|iphone|ipod|kindle|lg\-gw620|liquid\
build|maemo|mot\-mb200|mot\-mb300|nexus\ one|nokia|opera\
mini|samsung\-s8000|series60.*webkit|series60/5\.0|sonyericssone10|sonyericssonu20|sonyericssonx10|t\-mobile\
mytouch\ 3g|t\-mobile\ opal|tattoo|webmate|webos)" ) {
        set $mobile 1;
    }

    set $mobile_cookie "";
    if ($query_string ~ "full") {
        set $mobile_cookie "mobile=off;path=/";
        set $mobile 0;
    }
    if ($query_string ~ "mobile") {
        set $mobile_cookie "mobile=on;path=/";
        set $mobile 1;
    }
    add_header Set-Cookie $mobile_cookie;

    if ($cookie_mobile = 'off') {set $mobile 0;}

    if ($cookie_mobile = 'on') {set $mobile 1;}

    if ($mobile = '1') {
        rewrite ^(.*) http://m.domain.tld$1 permanent;
    }
#end of mobile redirect

        location / {
                        proxy_pass   http://1.1.1.1:80;
                        proxy_redirect off;
                        proxy_set_header Host $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
                }

    }


Но в этом варианте такой переход работает только после того как я нажимаю
кнопку с выбором версии (https://domain.tld/?mobile или
https://domain.tld/?full) два раза. В чем моя ошибка? Как правильно
организовать такие переходы?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,240333,240333#msg-240333



Подробная информация о списке рассылки nginx-ru