Mobile redirects

Audun Ytterdal audun at ytterdal.net
Tue Apr 13 10:09:50 CEST 2010


Ops. Accidently hit send button...

On Tue, Apr 13, 2010 at 10:06 AM, Audun Ytterdal <audun at ytterdal.net> wrote:
> On Tue, Apr 13, 2010 at 9:49 AM, Morten Bekkelund <morten at startsiden.no> wrote:
>> Hi Rob.
>>
>> I used the mobile redirect part of Alexc's example and created a simplified version
>> on our test-servers. It worked well.
>>
>> http://dingleberry.me/2010/03/mobile-redirects-using-varnish/
>
I've used this method:

sub vcl_recv {
        <.....>
        call identify_device;
 }

sub identify_device {
        unset req.http.hash-input;
        set req.http.X-VG-Device = "pc";
        if (!req.url ~
"^/[^?]+\.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.*|)$")
{
                if (req.http.Cookie ~ "vg_nomobile") {
                        set req.http.X-VG-Device = "pc-forced";
                }
                elsif (req.http.User-Agent ~ "iP(hone|od)") {
                        set req.http.X-VG-Device = "mobile-iphone";
                }

                elsif (req.http.User-Agent ~ "^HTC" ||
                req.http.User-Agent ~ "IEMobile" ||
                req.http.User-Agent ~ "Android") {
                        set req.http.X-VG-Device = "mobile-smartphone";
                }
                elsif (req.http.User-Agent ~ "SymbianOS" ||
                req.http.User-Agent ~ "^BlackBerry" ||
                req.http.User-Agent ~ "^SonyEricsson" ||
                req.http.User-Agent ~ "^Nokia" ||
                req.http.User-Agent ~ "^SAMSUNG" ||
                req.http.User-Agent ~ "^LG") {
                        set req.http.X-VG-Device = "mobile-dumbphone";
                }
        }
        if (req.http.X-VG-Device != "pc" && req.http.X-VG-Device !=
"pc-forced") {
                set req.http.hash-input = req.http.X-VG-Device;
        }
}

sub vcl_hash {
        set req.hash += req.http.hash-input;
}

And then the backend apache or the php-scripts can decide what to
present to the client...

So then you have a few choises

1) Apache sends redirect if X-VG-Devvice = ^mobile
2) Apache rewrites/proxyes
3) Php-code redirects or just presents a different template

-- 
Audun Ytterdal
http://audun.ytterdal.net



More information about the varnish-misc mailing list