Come si indirizza il browser iPhone / Android a m.example.com?


8

Ho alcuni codici speciali che funzionano solo con i browser HTML5 (semplici elementi di geolocalizzazione). Voglio reindirizzare gli utenti iPhone e Android alla versione m.example.com del mio sito Web. Qual è il modo migliore per farlo?

Risposte:


2

è possibile utilizzare il rilevamento UserAgent oppure è possibile utilizzare jQuery.support (). Dal momento che stai cercando funzionalità specifiche, puoi combinare le due cose per ottenere ciò che desideri.

UserAgent potrebbe effettivamente essere la soluzione migliore. Fallo con un file .htaccess per ridurre le tue richieste http ed eventualmente eseguire il flashing del tuo sito principale prima del reindirizzamento in caso di connessione lenta o prestazioni javascript lente.

Puoi vedere l'elenco (per lo più) esaustivo di agenti utenti mobili sulla pagina di Wikipedia . Come puoi vedere ci sono somiglianze tra produttori e versioni che potresti cercare in un'espressione regolare.


3
In questo modo il back-end è altamente preferibile rispetto a farlo con JS, soprattutto perché la larghezza di banda sui dispositivi mobili è molto stretta. il metodo .htaccess è la scommessa migliore, seguito da un PHP / ASP / qualunque metodo di backend
Mark Henderson

2

La tua domanda tocca due parti .. reindirizzamento e compatibilità html5.

reindirizzamento

Sto usando il seguente .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]

Per php puoi usare questa libreria: http://detectmobilebrowsers.mobi/ ... ma consiglio vivamente di usare htaccess per i tempi di elaborazione e sicurezza.

Puoi trovare alcuni esempi aggiuntivi qui

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

Funzionalità del browser

Dato che il mio telefono Android non ha problemi con html5 con codice di geolocalizzazione. Puoi prendere in considerazione l'utilizzo della Libreria Javascript di Modernizr per rilevare le funzionalità del browser client che visita la tua pagina.

L'eccellente modello HTML5 di plateplate utilizza modernizr out of the box per supportare questo tipo di esigenze.

La mia opinione è: suggerisco di utilizzare il metodo htaccess per tutto tranne i telefoni e i browser recenti supportati da modernizr e lasciare che gli utenti Android e iPhone siano controllati da Modernizr per il supporto delle funzionalità html5 e reindirizzare il "resto" sulla versione "senza geolocalizzazione".

Esempio di Modernizr:

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

Spero che sia di aiuto


1

Se stai codificando con PHP, puoi utilizzare $_SERVER['HTTP_USER_AGENT']per controllare l'intestazione UserAgent, che viene inviata quasi da tutti i principali dispositivi mobili allo script PHP. Quindi basta confrontare il valore di questa intestazione con substrfuction con tutto ciò che deve avere dentro.

Ad esempio, i dispositivi Apple avranno sempre le sottostringhe 'iphone' o 'ipad'; I dispositivi Android avranno sempre "Android". Quasi tutti i dispositivi mobili avranno una sottostringa "mobile" elencata in questa intestazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.