Перенаправление мобильных устройств на альтернативную версию моего сайта

У нас есть альтернативная версия готового сайта для мобильных устройств. Контент, который мы обслуживаем, отличается и работает хорошо.

Каков наилучший способ определить, какую версию можно обслуживать. У нас нет списка всех мобильных устройств, поэтому использовать заголовок user-agent сложно, поскольку мы можем что-то пропустить.

Мы думали об использовании ширины экрана устройства, но что происходит, если мобильное устройство не поддерживает javascript. Как мы это нюхаем?

Ответ 1

Вы можете использовать базу данных описания устройства (например, WURFL), которая распознает клиентское устройство из заголовков запросов. Затем вы можете запросить эту базу данных, чтобы решить, может ли устройство обрабатывать ваш сайт (например, поддерживать javascript или достаточно большой экран), прежде чем принимать решение о перенаправлении их на другой сайт.

Вы не упоминаете свою среду, но WURFL поставляет API для Java и PHP, а также другие. Если API не поставляется, вы все равно можете использовать WURFL, но вам придется самостоятельно анализировать и обрабатывать данные XML.

Ответ 2

media = "handheld" не работает с современными смартфонами, такими как iphone, которые притворяются настольными браузерами (использует тип экрана).

http://detectmobilebrowser.com/ Свободный и открытый исходный код имеет комплексную мобильную проверку агента пользователя, доступную на многих языках - javascript, php, asp.net, ruby ​​и т.д.

Ответ 3

Если вы хотите перенаправить на мобильный сайт с использованием JavaScript, я заметил, что у WURFL также есть решение, позволяющее вам выполнять обнаружение на стороне сервера с помощью JavaScript.

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script>

у вас останется объект JSON, который выглядит следующим образом:

{
     "complete_device_name":"Apple iPhone 6",
     "is_mobile":true,
     "form_factor":"Smartphone"
}

Затем вы можете использовать это:

if (WURFL.is_mobile === true) {
    window.location.replace("http://stackoverflow.com");
}

Ответ 4

Я не думаю, что есть хороший/элегантный способ определить, активирован ли пользователь javascript.

IMO, лучше всего перечислить пользовательский агент: здесь является списком User-Agent, который кажется вполне полным (по-французски, к сожалению).

Ответ 5

Просто поместите это в свой заголовок:

<script type="text/javascript">
 <!--
  if (screen.width <= 700) {
  window.location = "http://www.mobile-site.com";
  }
 //-->
</script>

Почти все экраны компьютеров находятся выше порога 700px, но эту ваулю можно изменить. Там нет телефона или планшета, который выше 700 пикселей (по крайней мере, я не знаю никого), поэтому все мобильные подразделения будут перенаправляться на ваш мобильный сайт.

Ответ 6

Альтернативой WURFL является Мобильное обнаружение, класс PHP для обнаружения:

  • Tablet
  • Мобильный
  • Иос
  • Android
  • Браузеры
  • И многое другое

Итак, если WURFL не делает то, что вам нужно, вы всегда можете это проверить.

Ответ 7

Соглашаясь с Skaffman, другая база данных устройств DeviceAtlas. Вы должны заплатить за это, хотя.

Ответ 8

Простой:

<link rel="alternate" media="handheld" href="WEBSITE HERE">

поместите это в раздел главы.

Ответ 9

Если устройство не поддерживает JS, лучше рассмотреть решение на стороне сервера, а WURFL API может помочь в этом направлении.

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

По этой причине я написал JS script, называемый "redirection_mobile.js", который обнаруживает агент пользователя браузера и перенаправляет на мобильную версию вашего сайта, если вы обращаетесь к нему с мобильного устройства.

В некоторых случаях вы хотите перенаправить с мобильного устройства на настольную версию (например, со ссылкой "Перейти на главный сайт" ), script обработает это, и как только вы закончите свой сеанс, вы получите доступ к мобильной версии снова.

Здесь вы можете найти исходный код github http://github.com/sebarmeli/JS-Redirection-Mobile-Site, и вы можете прочитать более подробную информацию в одной из моих статей здесь:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

Ответ 10

вот рабочее решение

RewriteEngine On
RewriteBase /

#http://stackoverflow.com/info/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]