Pregunta

Tenemos una versión alternativa de sitio web listo para dispositivos móviles.El tipo de contenido que sirven es diferente y funciona bien.

¿Cuál es la mejor manera de detectar que la versión para servir.No tenemos una lista de todos los dispositivos móviles para utilizar el encabezado de agente de usuario es complicado de lo que nos puede pasar por alto algo.

Pensamos desde dispositivo anchura de la pantalla, pero ¿qué pasa si el dispositivo móvil no soporta javascript.¿Cómo podemos oler esto ?

¿Fue útil?

Solución

Se puede usar una base de datos de descripción de dispositivos (como WURFL ) que reconocerá el dispositivo cliente de la solicitud cabeceras. A continuación, puede consultar la base de datos para decidir si el dispositivo puede manejar su sitio (por ejemplo, compatible con JavaScript o es la pantalla lo suficientemente grande) antes de decidir si los redirige a un sitio diferente.

Usted no menciona su entorno, pero WURFL suministros API para Java y PHP, y tal vez otros también. Si no hay ninguna API proporcionado, puede seguir utilizando WURFL, pero tendrá que analizar y procesar los datos XML a sí mismo.

Otros consejos

media = "handheld" no funciona con teléfonos inteligentes modernos como el iPhone, que se hacen pasar por un navegador de escritorio (utiliza el tipo de soporte de pantalla).

http://detectmobilebrowser.com/ de código libre y abierto, tiene un corrector integral móvil de agente de usuario disponible en muchos idiomas - Javascript, PHP, asp.net, Ruby, etc.

.

Si usted está buscando para redirigir a un sitio móvil utilizando JavaScript, me di cuenta de que WURFL también tiene una solución para que le permitirá hacer la detección del lado del servidor con JavaScript.

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script>

se le dejó con un objeto JSON que se parece a:

{
     "complete_device_name":"Apple iPhone 6",
     "is_mobile":true,
     "form_factor":"Smartphone"
}

A continuación, puede utilizar la siguiente:

if (WURFL.is_mobile === true) {
    window.location.replace("http://stackoverflow.com");
}

No creo que hay una manera buena / elegante para detectar si el usuario ha activado su JavaScript.

OMI, lo mejor es incluir al agente de usuario: aquí es una lista User-Agent, que parece bastante completa (en francés, por desgracia).

Sólo hay que poner esto en su cabecera:

<script type="text/javascript">
 <!--
  if (screen.width <= 700) {
  window.location = "http://www.mobile-site.com";
  }
 //-->
</script>

Casi pantallas de los ordenadores de todo el mundo están por encima del umbral de 700px pero esto vaule se pueden cambiar. Tampoco hay un teléfono o tableta por ahí que está por encima de 700 px (al menos yo no sé de ninguna) para que todos divices móviles se redirigir a su sitio móvil.

Una alternativa a la WURFL es Móvil Detectar, una clase de PHP para la detección de:

  • Tablet
  • Móvil
  • iOs
  • Android
  • Los navegadores
  • Y mucho más

Así que en caso de WURFL no hacer lo que usted necesita, siempre puede comprobar esto.

Coincidiendo con Skaffman, otra base de datos dispositivo es DeviceAtlas . Usted tiene que pagar por éste sin embargo.

Si el dispositivo no es compatible con JS, es mejor considerar una solución del lado del servidor, y API WURFL puede ayudar en esa dirección.

A veces queremos evitar problema con este tipo de enfoque (como un cachés de proxy inverso páginas y no dejamos que redirigir a la versión móvil) o necesitamos una solución rápida sabiendo que hoy en día casi todos los dispositivos recientes apoyan JS.

Por esta razón, me escribió un script JS llamado "redirection_mobile.js" que detecta el agente de usuario del navegador y redirige a la versión móvil de su sitio si usted está accediendo a ella desde un dispositivo móvil.?

En algunos casos desea redirigir desde un dispositivo móvil a una versión de escritorio (como con un enlace "Ir al sitio principal"), el guión se encargará de eso y una vez que termine la sesión, tendrá acceso a la versión móvil de nuevo.

Puede encontrar el código fuente en GitHub aquí http://github.com/sebarmeli / JS-redirección-sitio-móvil y se puede leer más detalles en una de mi artículo aquí:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

simple:

<link rel="alternate" media="handheld" href="WEBSITE HERE">

poner esto en la sección de cabecera.

aquí está la solución de trabajo

RewriteEngine On
RewriteBase /

#http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess
# Check if mobile=1 is set and set cookie 'mobile' equal to 1
RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
RewriteRule ^ - [CO=mobile:1:%{HTTP_HOST}]

# Check if mobile=0 is set and set cookie 'mobile' equal to 0
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [CO=mobile:0:%{HTTP_HOST}]

# cookie can't be set and read in the same request so check
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [S=1]

# Check if this looks like a mobile device
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR]
RewriteCond %{HTTP:Profile}       !^$
RewriteCond %{QUERY_STRING} !^mobile=0(?:&|$)
# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)
# Now redirect to the mobile site
RewriteRule ^ http://m.yourdomain.com%{REQUEST_URI} [R,L]

# Go back to full site
RewriteCond %{HTTP_HOST} ^m\.
RewriteCond %{QUERY_STRING} (?:^|&)mobile=0(?:&|$)
RewriteRule ^ http://yourdomain.com%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top