Domanda

Abbiamo una versione alternativa del sito al di fuori pronto per i dispositivi mobili. Il contenuto che serviamo è diverso e funziona bene.

Qual è il modo migliore per individuare quale versione di servire. Non abbiamo una lista di tutti i dispositivi mobili in modo da usare l'intestazione user-agent è difficile come si può perdere qualcosa.

Abbiamo pensato a useing larghezza dello schermo del dispositivo - ma cosa succede se il dispositivo mobile doesnt supporta javascript. Come facciamo a sniffare questo?

È stato utile?

Soluzione

È possibile utilizzare un database di descrizione del dispositivo (come ad esempio WURFL ), che riconoscerà il dispositivo client dalla richiesta intestazioni. È quindi possibile interrogare il database per decidere se il dispositivo è in grado di gestire il vostro sito (ad esempio supporta JavaScript, o è lo schermo abbastanza grande) prima di decidere se per orientarle verso un sito diverso.

Non accennate il proprio ambiente, ma WURFL ai materiali di consumo API per Java e PHP, e forse anche altri. Se non c'è API in dotazione, è comunque possibile utilizzare WURFL, ma dovrete analizzare ed elaborare i dati XML da soli.

Altri suggerimenti

supporti = "palmare" non funziona con gli smartphone moderni come l'iPhone, che fingono di essere un browser desktop (utilizza il tipo di supporto dello schermo).

http://detectmobilebrowser.com/ fonte libera e aperta, ha una pedina completa mobili user-agent disponibile in molte lingue - javascript, php, asp.net, Ruby, etc

.

Se siete alla ricerca di reindirizzare a un sito mobile utilizzando JavaScript, ho notato che WURFL ha anche una soluzione per che vi permetterà di fare il rilevamento lato server con JavaScript.

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

verrà lasciato con un oggetto JSON che assomiglia a:

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

È quindi possibile utilizzare questo:

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

Non credo che ci sia un / modo elegante buona per rilevare se l'utente ha il suo Javascript attivato.

IMO, la cosa migliore è di elencare l'user agent: qui è una lista User-Agent, che sembra abbastanza completo (in francese, purtroppo).

Basta mettere questo nel vostro intestazione:

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

Quasi schermi di computer di tutti sono al di sopra della soglia di 700px, ma questo vaule possono essere cambiati. C'è neanche un telefono o tablet là fuori che è al di sopra 700px (almeno io non so di qualsiasi) in modo che tutti divices mobili reindirizzerà al tuo sito per cellulari.

Un'alternativa a WURFL è mobile Detect , una classe PHP per la rilevazione:

  • Tablet
  • mobile
  • iOs
  • Android
  • Browser
  • E molto altro ancora

Quindi, nel caso in cui WURFL non fa quello che ti serve, si può sempre controllare questo fuori.

In accordo con Skaffman, un altro database dispositivo è DeviceAtlas . Si deve pagare per questo però.

Se il dispositivo non supporta JS, è meglio considerare una soluzione lato server e WURFL API può aiutare in quella direzione.

A volte vogliamo evitare problema con questo tipo di approccio (come ad esempio un Reverse pagine cache del proxy e non lasciare che reindirizza alla versione mobile) o abbiamo bisogno di una soluzione rapida, sapendo che al giorno d'oggi quasi tutti i dispositivi più recenti supportano JS.

Per questo motivo, ho scritto uno script JS chiamata "redirection_mobile.js" che rileva l'User Agent del browser e reindirizza alla versione mobile del vostro sito se si sta accedendo da un dispositivo mobile.

In alcuni casi si desidera reindirizzare da un dispositivo mobile a una versione desktop (come con un link "Vai al sito principale"), lo script che gestirà e una volta che hai finito la sessione, potrete accedere al ancora una volta versione mobile.

È possibile trovare il codice sorgente su GitHub qui http://github.com/sebarmeli / JS-reindirizzamento-mobile-Site e si può leggere maggiori dettagli in uno del mio articolo qui:

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

Semplice:

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

mettere che nella sezione head.

ecco la soluzione di lavoro

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]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top