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

8

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?

JoshFinnie
fuente

Respuestas:

2

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 la página de wikipedia . Como puede ver, existen similitudes entre fabricantes y versiones que podría buscar en una expresión regular.

holaandre
fuente
3
Hacer esto es el back-end es muy preferible a hacerlo con JS, especialmente porque el ancho de banda en dispositivos móviles es muy estrecho. El método .htaccess es la mejor opción, seguido de un PHP / ASP / cualquier método de backend
Mark Henderson
2

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

Redireccionamiento

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 teléfono Android no tiene ningún problema con html5 con código de geolocalización. Puede considerar usar la Biblioteca Javascript de Modernizr para detectar las capacidades del navegador del cliente que visita su página.

La excelente plantilla HTML5 repetitiva 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 teléfonos y navegadores recientes compatibles con modernizr y permitir que Modernizr verifique a los usuarios de Android y iPhone para obtener compatibilidad con la función html5 y redirigir el "resto" en su versión "sin geolocalización".

Ejemplo de Modernizr:

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

Espero que esto ayude

jflaflamme
fuente
1

Si está codificando con PHP, puede usarlo $_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 substrfuction con lo que sea necesario tener dentro.

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

Paul Pi
fuente