it-swarm-es.com

¿Cómo dirige el navegador de iPhone / Android a m.example.com?

Tengo una codificación especial que solo funciona para navegadores HTML5 (material de geolocalización simple). Quiero redirigir a los usuarios de iPhone y Android a la versión m.example.com de mi sitio web. ¿Cómo es la mejor manera de hacer esto?

8
JoshFinnie

puede usar la detección de UserAgent o puede usar jQuery.support (). Como está buscando una funcionalidad específica, puede combinar los dos para obtener lo que desea.

UserAgent podría ser tu mejor apuesta. Haga esto con un archivo .htaccess para reducir sus solicitudes http y posiblemente flashear su sitio principal antes de la redirección en el caso de una conexión lenta o un rendimiento lento de javascript.

Puede ver la lista (en su mayoría) exhaustiva de agentes de usuarios móviles en página wikipedia . Como puede ver, existen similitudes entre fabricantes y versiones que podría buscar en una expresión regular.

2
helloandre

Su pregunta toca dos partes ... redirección y compatibilidad html5.

Redirección

Estoy usando el siguiente .htaccess:

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]

Para php puede usar esta biblioteca: http://detectmobilebrowsers.mobi/ ... pero le sugiero encarecidamente que use htaccess para el tiempo de procesamiento y la seguridad.

Puedes encontrar algunos ejemplos adicionales aquí

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

Capacidades del navegador

Como mi Android teléfono no tiene ningún problema con html5 con código de geolocalización. Puede considerar usar Modernizr Javascript Library para detectar las capacidades del navegador del cliente que visita su página.

La excelente plantilla HTML5 boilerplate está utilizando modernizr de fábrica para soportar este tipo de necesidades.

Mi opinión es: sugiero utilizar el método htaccess para todo excepto los teléfonos y navegadores recientes compatibles con modernizr y permitir que Modernizr verifique a Android y los usuarios de iPhone para obtener compatibilidad con la función html5 y redirigir el "resto" en su " sin geolocalización ".

Ejemplo de Modernizr:

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

Espero que esto ayude

2
jflaflamme

Si está codificando con PHP, puede usar $_SERVER['HTTP_USER_AGENT'] para verificar el encabezado UserAgent, que se envía casi por cualquier dispositivo móvil importante al script PHP. Luego simplemente compare el valor de este encabezado con la función substr con lo que sea necesario tener dentro.

Por ejemplo, Apple dispositivos siempre tendrán subcadenas 'iphone' o 'ipad'; Android los dispositivos siempre tendrán 'Android'. Casi todos los dispositivos móviles tendrán una subcadena 'móvil' listada en este encabezado.

1
Paul Pi