Upgrade Your Drupal Skills
We trained 1,000+ Drupal Developers over the last decade.
See Advanced Courses NAH, I know EnoughMobile device detection with Varnish
Parent Feed:
As I already have blogged before, if you are using Varnish as a page caching mechanism, Drupal cannot be used to detect the device that is visiting your website.
Already some examples have been created to detect devices in Varnish and add a header string that allows the Drupal backend to know about the device type.
This is just a small snippet that I use to redirect mobile users to a mobile url and desktop users to the desktop url.
# vcl_recv routine sub vcl_recv { call device_detection; # other site specific vcl rules follow here } # Routine to try and identify device sub device_detection { # Default to thinking it's a PC set req.http.X-Device = "pc"; # Add all possible agent strings # These are the most popular agent strings if (req.http.User-Agent ~ "iP(hone|od)" || req.http.User-Agent ~ "Android" || req.http.User-Agent ~ "Symbian" || 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" || req.http.User-Agent ~ " webOS") { set req.http.X-Device = "mobile"; } # These are some more obscure agent strings if (req.http.User-Agent ~ "^PalmSource"){ set req.http.X-Device = "mobile"; } # Decide if we need redirection if(req.http.X-Device == "mobile") { if(req.http.host !~ "m.domain.ltd"){ error 750 "m.domain.ltd"; } } else { if(req.http.host ~ "m.domain.ltd"){ error 750 "www.domain.ltd"; } } } # Redirection routine sub vcl_error { if (obj.status == 750) { if (obj.response ~ "m.domain.ltd") { set obj.http.Location = "http://m.domain.ltd" req.url; } elsif (obj.response ~ "www.domain.ltd") { set obj.http.Location = "http://www.domain.ltd" req.url; } set obj.status = 302; return(deliver); } }
About Drupal Sun
Drupal Sun is an Evolving Web project. It allows you to:
- Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
- Facet based on tags, author, or feed
- Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
- View the entire article text inline, or in the context of the site where it was created
See the blog post at Evolving Web