it-swarm-vi.com

Làm thế nào để bạn hướng trình duyệt iPhone / Android đến m.example.com?

Tôi có một số mã hóa đặc biệt chỉ hoạt động cho trình duyệt HTML5 (công cụ định vị địa lý đơn giản). Tôi muốn chuyển hướng người dùng iPhone và Android sang phiên bản m.example.com của trang web của tôi. Làm thế nào là cách tốt nhất để làm điều này?

8
JoshFinnie

bạn có thể sử dụng tính năng phát hiện UserAgent hoặc bạn có thể sử dụng jQuery.support (). Vì bạn đang tìm kiếm chức năng cụ thể, bạn có thể kết hợp cả hai để có được những gì bạn muốn.

UserAgent thực sự có thể là lựa chọn tốt nhất của bạn. Thực hiện việc này với tệp .htaccess để cắt giảm các yêu cầu http của bạn và có thể flash trang web chính của bạn trước khi chuyển hướng trong trường hợp kết nối chậm hoặc hiệu suất javascript chậm.

Bạn có thể thấy danh sách đầy đủ (hầu hết) các tác nhân người dùng di động trên trang wikipedia . Như bạn có thể thấy có sự tương đồng giữa các nhà sản xuất và các phiên bản mà bạn có thể tìm kiếm trong một biểu thức thông thường.

2
helloandre

Câu hỏi của bạn chạm hai phần .. chuyển hướng và tương thích html5.

Chuyển hướng

Tôi đang sử dụng .htaccess sau:

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]

Đối với php, bạn có thể sử dụng thư viện này: http://detectmobilebrowsers.mobi/ ... nhưng tôi thực sự khuyên bạn nên sử dụng htaccess để xử lý thời gian và bảo mật.

Bạn có thể tìm thấy một số ví dụ bổ sung ở đây

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

Khả năng của trình duyệt

Vì điện thoại Android của tôi không có vấn đề gì với html5 với mã định vị địa lý. Bạn có thể xem xét sử dụng Thư viện Javascript Modernizr để phát hiện các khả năng của trình duyệt máy khách truy cập trang của bạn.

Mẫu mẫu soạn sẵn HTML5 đang sử dụng Modernizr ngoài hộp để hỗ trợ loại nhu cầu này.

Ý kiến ​​của tôi là: Tôi đề nghị sử dụng phương pháp htaccess cho mọi thứ trừ các điện thoại và trình duyệt gần đây được Modernizr hỗ trợ và để Android và người dùng iPhone được Modernizr kiểm tra để hỗ trợ tính năng html5 và chuyển hướng "phần còn lại" trên " không có định vị địa lý "phiên bản.

Ví dụ hiện đại:

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

Hi vọng điêu nay co ich

2
jflaflamme

Nếu bạn đang mã hóa bằng PHP, bạn có thể sử dụng $_SERVER['HTTP_USER_AGENT'] để kiểm tra tiêu đề UserAgent, được gửi gần như bởi bất kỳ thiết bị di động chính nào tới tập lệnh PHP. Sau đó, chỉ cần so sánh giá trị của tiêu đề này với substr ftion với bất cứ thứ gì nó cần phải có bên trong.

Ví dụ: các thiết bị Apple sẽ luôn có các chuỗi con 'iphone' hoặc 'ipad'; Android thiết bị sẽ luôn có 'Android'. Hầu như mọi thiết bị di động sẽ có chuỗi con 'di động' được liệt kê trong tiêu đề này.

1
Paul Pi