desenv-web-rp.com

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

Eu tenho uma codificação especial que só funciona para navegadores HTML5 (coisas simples de geolocalização). Quero 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?

8
JoshFinnie

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 das vezes) exaustiva de agentes de usuários móveis na página 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.

2
helloandre

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 fortemente o uso do 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 o Modernizr Javascript Library para detectar os recursos do navegador do cliente visitando sua página.

O excelente modelo HTML5 clichê 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 permita que Android e usuários do iPhone sejam verificados pelo Modernizr quanto ao suporte a recursos html5 e redirecione o "resto" do seu "sem geolocalização "version.

Exemplo Modernizr:

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

Espero que isto ajude

2
jflaflamme

Se você estiver codificando com PHP, poderá usar $_SERVER['HTTP_USER_AGENT'] para 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 a função substr 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.

1
Paul Pi