it-gundan.com

iPhone / Android 브라우저를 m.example.com으로 어떻게 안내합니까?

HTML5 브라우저 (단순한 위치 정보)에서만 작동하는 특수 코딩이 있습니다. iPhone 및 Android 사용자를 내 웹 사이트의 m.example.com 버전으로 리디렉션하고 싶습니다. 가장 좋은 방법은 무엇입니까?

8
JoshFinnie

userAgent 감지를 사용하거나 jQuery.support ()를 사용할 수 있습니다. 특정 기능을 찾고 있으므로 두 기능을 결합하여 원하는 것을 얻을 수 있습니다.

UserAgent가 실제로 가장 좋은 방법 일 수 있습니다. .htaccess 파일을 사용하여 http 요청을 줄이고 연결 속도가 느리거나 자바 스크립트 성능이 느린 경우 리디렉션하기 전에 기본 사이트를 플래시 할 수 있습니다.

wikipedia page 에서 모바일 사용자 에이전트의 전체 목록을 볼 수 있습니다. 보시다시피 제조업체와 버전 간에는 정규 표현식에서 찾을 수있는 유사점이 있습니다.

2
helloandre

귀하의 질문은 두 부분 .. 리디렉션 및 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 Library 를 사용하여 페이지를 방문하는 클라이언트 브라우저의 기능을 감지 할 수 있습니다.

탁월한 HTML5 상용구 템플릿은 이러한 종류의 요구를 지원하기 위해 즉시 사용 가능한 modernizr을 사용합니다.

내 의견은 : modernizr에서 지원하는 최신 전화 및 브라우저를 제외한 모든 것에 대해 htaccess 방법을 사용하고 html5 기능 지원을 위해 Modernizr에서 Android 및 iPhone 사용자를 확인하고 "휴식"을 " 위치 정보가없는 "버전입니다.

Modernizr 예제 :

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

도움이 되었기를 바랍니다

2
jflaflamme

PHP로 코딩하는 경우 $_SERVER['HTTP_USER_AGENT']를 사용하여 UserAgent 헤더를 확인할 수 있습니다. UserAgent 헤더는 거의 모든 주요 모바일 장치에서 PHP 스크립트로 전송됩니다. 그런 다음이 헤더의 값을 substr 기능과 비교해야합니다.

예를 들어, Apple 장치에는 항상 'iphone'또는 'ipad'하위 문자열이 있습니다. Android 기기에는 항상 'Android'가 있습니다. 거의 모든 모바일 장치에는이 헤더에 'mobile'하위 문자열이 표시됩니다.

1
Paul Pi