it-swarm.it

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

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?

8
JoshFinnie

è 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 user agent mobili nella pagina wikipedia . Come puoi vedere ci sono somiglianze tra produttori e versioni che potresti cercare in un'espressione regolare.

2
helloandre

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 ti consiglio vivamente di usare htaccess per 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

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

L'eccellente modello HTML5 boilerplate 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 Android e gli utenti iPhone siano controllati da Modernizr per il supporto delle funzionalità html5 e reindirizzare il "resto" sul tuo " senza geolocalizzazione "versione.

Esempio di Modernizr:

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

Spero che questo ti aiuti

2
jflaflamme

Se stai codificando con PHP, puoi utilizzare $_SERVER['HTTP_USER_AGENT'] per controllare l'intestazione UserAgent, che viene inviata quasi da qualsiasi dispositivo mobile principale allo script PHP. Quindi confronta il valore di questa intestazione con substr fuction con tutto ciò che deve avere dentro.

Ad esempio, Apple disporrà sempre di sottostringhe 'iphone' o 'ipad'; Android dispositivi avranno sempre 'Android'. Quasi ogni dispositivo mobile avrà sotto-stringa "mobile" elencata in questa intestazione.

1
Paul Pi