Comment dirigez-vous le navigateur iPhone / Android vers m.example.com?

8

J'ai un codage spécial qui ne fonctionne que pour les navigateurs HTML5 (simple truc de géolocalisation). Je souhaite rediriger les utilisateurs d'iPhone et d'Android vers la version m.example.com de mon site Web. Quelle est la meilleure façon de procéder?

JoshFinnie
la source

Réponses:

2

vous pouvez utiliser la détection UserAgent ou utiliser jQuery.support (). Puisque vous recherchez des fonctionnalités spécifiques, vous pouvez combiner les deux pour obtenir ce que vous voulez.

UserAgent pourrait en fait être votre meilleur pari. Faites-le avec un fichier .htaccess pour réduire vos requêtes http, et éventuellement flasher votre site principal avant la redirection en cas de connexion lente ou de performances javascript lentes.

Vous pouvez voir la liste (principalement) exhaustive des agents utilisateurs mobiles sur la page wikipedia . Comme vous pouvez le voir, il existe des similitudes entre les fabricants et les versions que vous pouvez rechercher dans une expression régulière.

bonjour
la source
3
Faire cela est que le back-end est hautement préférable à le faire avec JS, d'autant plus que la bande passante sur les appareils mobiles est très étroite. la méthode .htaccess est le meilleur pari, suivie par une méthode PHP / ASP / quelle que soit la méthode backend
Mark Henderson
2

Votre question touche deux parties .. redirection et compatibilité html5.

Redirection

J'utilise le .htaccess suivant:

RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|android" [NC]
RewriteRule ^(.*)$ http://m.example.com/ [L,R=302]

Pour php, vous pouvez utiliser cette bibliothèque: http://detectmobilebrowsers.mobi/ ... mais je suggère fortement d'utiliser htaccess pour le temps de traitement et la sécurité.

Vous pouvez trouver quelques exemples supplémentaires ici

http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/

Capacités du navigateur

Comme mon téléphone Android n'a aucun problème avec html5 avec le code de géolocalisation. Vous pouvez envisager d'utiliser la bibliothèque Javascript Modernizr pour détecter les capacités du navigateur client visitant votre page.

L'excellent modèle de passe- partout HTML5 utilise modernizr prêt à l' emploi pour répondre à ce type de besoins.

Mon avis est: je suggère d'utiliser la méthode htaccess pour tout sauf les téléphones et navigateurs récents pris en charge par modernizr et de laisser les utilisateurs d'Android et d'iPhone être vérifiés par Modernizr pour le support des fonctionnalités html5 et rediriger le "reste" sur votre version "sans géolocalisation".

Exemple de modernisation:

 if (Modernizr.geolocation) {
    // do stuff
 }else{
    // propose mobile version 
 }

J'espère que cela t'aides

jflaflamme
la source
1

Si vous codez avec PHP, vous pouvez utiliser $_SERVER['HTTP_USER_AGENT']pour vérifier l'en-tête UserAgent, qui est envoyé presque par n'importe quel appareil mobile majeur au script PHP. Ensuite, comparez simplement la valeur de cet en-tête avec substrfuction à tout ce qu'il doit avoir à l'intérieur.

Par exemple, les appareils Apple auront toujours des sous-chaînes «iphone» ou «ipad»; Les appareils Android auront toujours «android». Presque chaque appareil mobile aura une sous-chaîne «mobile» répertoriée dans cet en-tête.

Paul Pi
la source