Como você direciona o navegador iPhone / Android para m.example.com?

8

Eu tenho uma codificação especial que só funciona para navegadores HTML5 (coisas simples de geolocalização). Desejo redirecionar os usuários do iPhone e Android para a versão m.example.com do meu site. Como é a melhor maneira de fazer isso?

JoshFinnie
fonte

Respostas:

2

você pode usar a detecção do UserAgent ou o jQuery.support (). Como você procura funcionalidade específica, pode combinar os dois para obter o que deseja.

O UserAgent pode realmente ser sua melhor aposta. Faça isso com um arquivo .htaccess para reduzir as solicitações HTTP e, possivelmente, exibir o site principal antes do redirecionamento no caso de conexão lenta ou desempenho lento do javascript.

Você pode ver a lista (na maioria) exaustiva de agentes de usuários móveis na página da wikipedia . Como você pode ver, existem semelhanças entre fabricantes e versões que você poderia procurar em uma expressão regular.

helloandre
fonte
3
Fazer isso é muito preferível do que fazer com JS, especialmente porque a largura de banda em dispositivos móveis é muito estreita. o método .htaccess é a melhor aposta, seguido por um qualquer método PHP / ASP / backend
Mark Henderson
2

Sua pergunta toca em duas partes. Redirecionamento e compatibilidade html5.

Redirecionamento

Estou usando o seguinte .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]

Para php, você pode usar esta biblioteca: http://detectmobilebrowsers.mobi/ ... mas eu sugiro usar o htaccess para tempo e segurança de processamento.

Você pode encontrar alguns exemplos adicionais aqui

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

Recursos do navegador

Como meu telefone Android não tem problemas com o html5 com código de geolocalização. Você pode considerar usar a Biblioteca Javascript Modernizr para detectar os recursos do navegador do cliente que visita sua página.

O excelente modelo padrão do HTML5 está usando o modernizr pronto para suportar esse tipo de necessidade.

Minha opinião é: sugiro usar o método htaccess para tudo, exceto telefones e navegadores recentes suportados pelo modernizr, e permitir que usuários do Android e iPhone sejam verificados pelo Modernizr quanto ao suporte a recursos html5 e redirecione o "resto" da sua versão "sem geolocalização".

Exemplo Modernizr:

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

Espero que isto ajude

jflaflamme
fonte
1

Se você estiver codificando com PHP, poderá $_SERVER['HTTP_USER_AGENT']verificar o cabeçalho do UserAgent, que é enviado quase por qualquer dispositivo móvel importante para o script PHP. Em seguida, basta comparar o valor desse cabeçalho com substra função com o que ele precisa ter dentro.

Por exemplo, os dispositivos Apple sempre terão sub-strings 'iphone' ou 'ipad'; Os dispositivos Android sempre terão 'android'. Quase todos os dispositivos móveis terão uma sub-string 'móvel' listada neste cabeçalho.

Paul Pi
fonte