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?
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:
è 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.
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
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 substr
fuction 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.