web-dev-qa-db-fra.com

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

J'ai un code spécial qui ne fonctionne que pour les navigateurs HTML5 (simple système de géolocalisation). Je souhaite rediriger les utilisateurs d'iPhone et Android vers la version m.example.com de mon site Web. Comment est la meilleure façon de faire cela?

8
JoshFinnie

vous pouvez utiliser la détection UserAgent ou 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, pour flasher votre site principal avant la redirection en cas de connexion lente ou de performances javascript lentes.

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

2
helloandre

Votre question touche deux parties .. la redirection et la 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/

Fonctionnalités du navigateur

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

L'excellent HTML5 warmplate template utilise modernizr out of the box pour répondre à ce type de besoins.

Mon opinion est la suivante: 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 laisser Android et les utilisateurs d'iPhone être vérifiés par Modernizr pour la prise en charge des fonctionnalités html5 et rediriger le "reste" sur votre " sans géolocalisation ".

Exemple de modernisation:

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

J'espère que cela t'aides

2
jflaflamme

Si vous codez avec PHP, vous pouvez utiliser $_SERVER['HTTP_USER_AGENT'] pour vérifier l'en-tête de 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 substrfonction à tout ce dont il a besoin.

Par exemple, les appareils Apple auront toujours des sous-chaînes "iphone" ou "ipad"; Android les appareils auront toujours "Android". Presque tous les appareils mobiles auront une sous-chaîne 'mobile' listée dans cet en-tête.

1
Paul Pi