모바일 용 사용자 에이전트의 놀라운 차이로 인해 nginx 구성보다 코드 리디렉션을 사용하는 것이 훨씬 낫습니다. 특히, nginx에서 if
진술을 호출하는 비용은 중요하지 않습니다.
This website은 구식이고 그리 오래되지 않은 모바일 사용자 에이전트의 비 한정적인 목록을 가지고 있습니다. 당신은 목록이 실제로 아주 gianormous다는 것을 빨리, 빨리 볼 것이다. 이제 아이폰, 아이팟, 아이 패드에 집중하겠습니다. AppleWebKit/420 + (도마뱀 붙이와 같은 KHTML) 버전/3.0 모바일
모질라/5.0 (; CPU 종류; 맥 OS X와 같은 CPU 엔 장치 유형을) : 그들은 구별하기 매우 쉽다/1A543a Safari/419.3
따라서이 문제는 문제가되지 않습니다. 그러나이 문자열은 사파리의 데스크톱 사용자 에이전트를 포함한 다른 것들과 매우 유사합니다 ... 그리고 이것은 가장 쉬운 전화를위한 것입니다. 안드로이드는 그렇게 단순하지 않습니다. 예를 들어 보자, HTC의 욕망 :
모질라/5.0 (리눅스, U, 안드로이드 2.1 갱신 1, 드 드, HTC 디자 이어 1.19.161.5 빌드/ERE27) AppleWebKit/530.17 (KHTML, 도마뱀 붙이 등) 버전/4.0 모바일 사파리/530.17
OS 식별자가 세 번째 필드로 변경되었습니다. 즉, iPhone 및 일부 Android와 일치시키기 위해 최소 두 개의 정규 표현식 엔진 호출이 필요합니다.
MOT - V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0
: 음, 모토로라 드로이드 가자 ... 때문에, 어떤 말인지
... Waaat?
결론 : 가양 성 (false positive)에 신경 쓰면 사용자 에이전트 데이터베이스가 필요합니다. 그렇지 않다면, 사용자 에이전트에서 정규식을 사용하여 nginx에 대한 광범위한 검사를 수행하고 키워드 iPad, iPhone, iPod, Android, Windows Phone을 검색하십시오. 그것은 모든 모바일 사용자의 약 80-85 %를 표시합니다. 모두과 일치하려면 제조업체에서 사용자 에이전트를 다시 작성해야하므로 user-agent의 DB를 사용해야합니다.
이런 식으로 내 문제에 대한 자세한 답변을 보내 주셔서 감사합니다. 내 실제 웹 사이트 코드 대 내 설정에 변수를 내 국가에 대한 검사를 통합하는 방법을 알아내는 것이 더 나을 것이라고 생각합니다. –
국가는 nginx에서 괜찮습니다. 코드의 놀라운 복잡성으로 인해 코드에서 수행하려는 사용자 에이전트 부분입니다. –