Question

Nous avons une autre version du site à la disposition pour les appareils mobiles. Le contenu que nous servons est différent et il fonctionne bien.

Quelle est la meilleure façon de détecter la version à servir. Nous n'avons pas une liste de tous les appareils mobiles afin d'utiliser l'en-tête de l'agent utilisateur est délicate car nous manquer quelque chose.

Nous avons pensé à useing largeur de l'écran de l'appareil - mais ce qui se passera si l'appareil mobile ne marche pas en charge JavaScript. Comment pouvons-nous renifler cela?

Était-ce utile?

La solution

Vous pouvez utiliser une base de données de description de l'appareil (comme WURFL ) qui reconnaîtra le dispositif client de la demande les en-têtes. Vous pouvez ensuite interroger cette base de données pour déterminer si l'appareil peut gérer votre site (par exemple support javascript, ou est l'écran assez grand) avant de décider de les rediriger vers un autre site.

Vous ne mentionnez pas votre environnement, mais WURFL API pour Java fournitures dont PHP et, et peut-être d'autres aussi bien. S'il n'y a pas d'API fourni, vous pouvez toujours utiliser WURFL, mais vous devrez analyser et traiter les données XML vous.

Autres conseils

media = « poche » ne fonctionne pas avec les smartphones modernes comme l'iPhone qui font semblant d'être un navigateur de bureau (utilise l'écran type de support).

http://detectmobilebrowser.com/ libres et Open Source, a un contrôleur mobile de l'agent utilisateur complet disponible dans de nombreuses langues - javascript, php, asp.net, rubis, etc

.

Si vous cherchez à rediriger vers un site mobile en utilisant JavaScript, j'ai remarqué que WURFL a aussi une solution pour qui vous permettra de faire la détection côté serveur avec JavaScript.

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

vous serez à gauche avec un objet JSON qui ressemble à:

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

Vous pouvez ensuite utiliser ceci:

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

Je ne pense pas qu'il y ait un bon moyen / élégant pour détecter si l'utilisateur a son javascript activé.

OMI, le mieux est de lister l'agent utilisateur: est une liste Agent-utilisateur, ce qui semble assez complet (en français, malheureusement).

Il suffit de mettre dans votre tête:

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

Juste sur les écrans d'ordinateur de chacun sont au-dessus du seuil de 700px mais vaule peuvent être modifiés. Il ny a pas un téléphone ou une tablette là-bas qui est au-dessus 700px (au moins je ne sais pas de tout) pour que tous les divices mobiles seront redirigés vers votre site mobile.

Une alternative à WURFL est mobile Detect , une classe PHP pour détecter:

  • Tablet
  • Mobile
  • iOs
  • Android
  • Browsers
  • Et beaucoup plus

Ainsi, en cas WURFL ne fait pas ce dont vous avez besoin, vous pouvez toujours vérifier cela.

En accord avec Skaffman, une autre base de données de dispositif est DeviceAtlas . Vous devez payer pour celui-ci cependant.

Si l'appareil ne prend pas en charge JS, il est préférable d'envisager une solution côté serveur et API WURFL peut aider dans cette direction.

Parfois, nous voulons éviter problème avec ce type d'approche (par exemple un proxy met en cache les pages inversées et ne laissez pas rediriger vers la version mobile) ou nous avons besoin d'une solution rapide sachant que de nos jours, presque tous les appareils récents supportent JS.

Pour cette raison, j'ai écrit un script JS appelé « redirection_mobile.js » qui détecte l'agent utilisateur du navigateur et redirige vers la version mobile de votre site si vous accédez à partir d'un appareil mobile.

Dans certains cas, vous souhaitez rediriger à partir d'un appareil mobile vers une version de bureau (comme avec un lien « Aller vers le site principal »), le script traitera que et une fois que vous avez terminé votre session, vous aurez accès à la La version mobile de nouveau.

Vous pouvez trouver le code source sur GitHub ici http://github.com/sebarmeli / JS Redirection-mobile site et vous pouvez lire plus de détails dans l'un de mon article ici:

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">

le mettre dans la section de la tête.

ici est la solution de travail

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]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top