2009-10-07 10:03

Dans un billet précédent, je détaillais comme mettre en place une redirection mobile basée sur l’en-tête HTTP User-Agent, avec Squid. Exemple : quand un mobile se rend sur www.monsite.com, il est redirigé vers mobile.monsite.com.

Maintenant, nous désirons ajouter un lien sur mobile.monsite.com qui permette d’accéder au site en mode normal (www.monsite.com).

Problème : la redirection est en place, et dès que le mobile retournera sur www.monsite.com, il sera redirigé de nouveau.

Solution : en se basant sur l’en-tête HTTP Referer, on ne redirige pas les mobiles quand l’utilisateur vient du domaine *.monsite.com

Réalisé de la manière suivante dans la configuration Squid :

###################################
# on redirige les telephones vers mobile.monsite.com
url_rewrite_program /etc/squid/redirect_mobile.sh

acl symbian browser Symbian
acl iphone browser iP(hone|od)
acl android browser Android
acl mobile_url dstdomain mobile.monsite.com
acl from_monsite referer_regex ^http\://[^/]+\.monsite\.com   # on teste si l'utilisateur vient de *.monsite.com

url_rewrite_access deny mobile_url
url_rewrite_access deny from_monsite   # on ne redirige pas quand c'est le cas
url_rewrite_access allow symbian
url_rewrite_access allow iphone
url_rewrite_access allow android
url_rewrite_access deny all

De cette manière, si le mobile vient de l’extérieur (d’un moteur de recherche ou autre site, ou qu’il tape directement l’URL dans la barre d’adresse), il sera redirigé. En revanche, s’il a cliqué sur un lien « www.monsite.com en mode normal » depuis mobile.monsite.com, il ne sera pas redirigé.

Note :
Cette solution est aisément transposable en règles de réécriture apache.

2009-10-07 10:03 · Tags: , ,

3 Comments

  1. Bonjour,
    Je vous propose un code php imparable sur http://benoitdupard.blogspot.com
    Je l’ai placé sur mon site http://www.marketing-vins.fr

    @+

    Répondre

  2. Bonjour
    très interessant ce truc. Et si le site n’a pas ce bouton, y a-t-il une astuce pour voir le site normal quand même ? C’est le cas avec le site de TV5 par exemple.
    bonne journée

    Répondre

  3. Le site utilise l’en-tête HTTP “Header” pour détecter si votre navigateur est un mobile ou pas.

    Certains navigateurs (avec une extension sous Firefox) permettent de modifier ces en-tête de manière à se faire passer pour un autre navigateur.

    Mais sous Android ou iPhone, je doute que ça soit possible avec les navigateurs par défaut. Si ça n’est pas possible, écrire au Webmaster de TV5 pour leur dire que leur site est mal fait…

    Répondre

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>