Reindirizzare i dispositivi mobili alla versione alternativa del mio sito
-
12-09-2019 - |
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?
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:
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]