Как вы направляете браузер iPhone / Android на m.example.com?

8

У меня есть специальное кодирование, которое работает только для браузеров HTML5 (простая геолокация). Я хочу перенаправить пользователей iPhone и Android на версию моего сайта m.example.com. Как лучше всего это сделать?

JoshFinnie
источник

Ответы:

2

вы можете использовать обнаружение UserAgent или jQuery.support (). Поскольку вы ищете конкретную функциональность, вы можете комбинировать эти два, чтобы получить то, что вы хотите.

UserAgent может быть вашим лучшим выбором. Сделайте это с помощью файла .htaccess, чтобы сократить ваши http-запросы и, возможно, перепрограммировать основной сайт перед перенаправлением в случае медленного соединения или низкой производительности javascript.

Вы можете увидеть (в основном) исчерпывающий список мобильных пользовательских агентов на странице википедии . Как видите, между производителями и версиями есть сходства, которые вы можете искать в регулярном выражении.

helloandre
источник
3
Делать это в качестве бэк-энда очень предпочтительнее, чем делать это с JS, тем более что пропускная способность на мобильных устройствах очень мала. Лучше всего использовать метод .htaccess, за которым следует метод PHP / ASP / любой другой бэкэнд
Марк Хендерсон,
2

Ваш вопрос касается двух частей .. перенаправление и совместимость с html5.

Перенаправление

Я использую следующий .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]

Для PHP вы можете использовать эту библиотеку: http://detectmobilebrowsers.mobi/ ... но я настоятельно рекомендую использовать htaccess для обработки времени и безопасности.

Вы можете найти некоторые дополнительные примеры здесь

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

Возможности браузера

Поскольку у моего телефона Android нет проблем с html5 с кодом геолокации. Вы можете рассмотреть возможность использования библиотеки Modernizr Javascript для определения возможностей браузера клиента, посещающего вашу страницу.

Отличный шаблонный шаблон HTML5 использует modernizr из коробки для поддержки такого рода потребностей.

Мое мнение таково: я предлагаю использовать метод htaccess для всего, кроме последних телефонов и браузеров, поддерживаемых modernizr, и пусть пользователи Android и iPhone будут проверены Modernizr на предмет поддержки html5-функции и перенаправят «остальные» в вашу версию «без геолокации».

Пример модернизра:

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

Надеюсь это поможет

jflaflamme
источник
1

Если вы пишете $_SERVER['HTTP_USER_AGENT']код на PHP, вы можете использовать для проверки заголовок UserAgent, который отправляется практически любым крупным мобильным устройством в сценарий PHP. Тогда просто сравните значение этого заголовка с substrfuction с тем, что у него должно быть внутри.

Например, устройства Apple всегда будут иметь подстроки «iphone» или «ipad»; Устройства Android всегда будут иметь Android. Почти каждое мобильное устройство будет иметь подстроку 'mobile' в этом заголовке.

Пол Пи
источник