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