Bagaimana Anda mengarahkan peramban iPhone / Android ke m.example.com?

8

Saya memiliki beberapa pengkodean khusus yang hanya berfungsi untuk browser HTML5 (hal-hal geolokasi sederhana). Saya ingin mengarahkan pengguna iPhone dan Android ke versi m.example.com situs web saya. Bagaimana cara terbaik untuk melakukan ini?

JoshFinnie
sumber

Jawaban:

2

Anda dapat menggunakan deteksi UserAgent, atau Anda dapat menggunakan jQuery.support (). Karena Anda mencari fungsionalitas tertentu, Anda dapat menggabungkan keduanya untuk mendapatkan yang Anda inginkan.

UserAgent mungkin benar-benar taruhan terbaik Anda. Lakukan ini dengan file .htaccess untuk mengurangi permintaan http Anda, dan mungkin mem-flash situs utama Anda sebelum pengalihan jika terjadi koneksi yang lambat atau kinerja javascript yang lambat.

Anda dapat melihat (sebagian besar) daftar lengkap agen pengguna seluler di halaman wikipedia . Seperti yang Anda lihat ada persamaan antara produsen dan versi yang bisa Anda cari dalam ekspresi reguler.

helloandre
sumber
3
Melakukan ini adalah back-end lebih disukai daripada melakukannya dengan JS, terutama karena bandwidth pada perangkat seluler sangat sempit. metode .htaccess adalah taruhan terbaik, diikuti oleh PHP / ASP / metode backend apa pun
Mark Henderson
2

Pertanyaan Anda menyentuh dua bagian .. pengalihan dan kompatibilitas HTML5.

Pengalihan

Saya menggunakan .htaccess berikut:

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]

Untuk php Anda dapat menggunakan perpustakaan ini: http://detectmobilebrowsers.mobi/ ... tetapi saya sangat menyarankan menggunakan htaccess untuk memproses waktu dan keamanan.

Anda dapat menemukan beberapa contoh tambahan di sini

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

Kemampuan browser

Karena ponsel Android saya tidak memiliki masalah dengan HTML5 dengan kode geolokasi. Anda dapat mempertimbangkan untuk menggunakan Perpustakaan Javascript Modernizr untuk mendeteksi kemampuan browser klien yang mengunjungi halaman Anda.

Yang sangat baik HTML5 boilerplate template menggunakan modernizr keluar dari kotak untuk mendukung semacam ini kebutuhan.

Pendapat saya adalah: Saya sarankan untuk menggunakan metode htaccess untuk semuanya kecuali ponsel dan browser terbaru yang didukung oleh modernizr dan biarkan pengguna Android dan iPhone diperiksa oleh Modernizr untuk dukungan fitur html5 dan arahkan "istirahat" pada versi "tanpa geolokasi" Anda.

Contoh modernizr:

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

Semoga ini membantu

jflaflamme
sumber
1

Jika Anda mengode dengan PHP, Anda bisa menggunakannya $_SERVER['HTTP_USER_AGENT']untuk memeriksa header UserAgent, yang dikirim hampir oleh perangkat seluler utama apa pun ke skrip PHP. Kemudian, bandingkan nilai header ini dengan substrfungsinya dengan apa pun yang diperlukan di dalamnya.

Misalnya, perangkat Apple akan selalu memiliki sub-string 'iphone' atau 'ipad'; Perangkat Android akan selalu memiliki 'android'. Hampir setiap perangkat seluler memiliki sub-string 'ponsel' yang tercantum di tajuk ini.

Paul Pi
sumber