2012-07-09 3 views
3

모바일 장치의 모든 요청을/mobile/$ uri로 리디렉션하도록 nginx를 설정하려고합니다. 이 솔루션을 생각해 냈지만 작동하지 않는 것 같습니다. . 전체 리디렉션 개념의 구문 문제 또는 오해입니까?

if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') { 
    rewrite  ^(.*) http://xxxx.org/mobile/$1 permanent; 
} 

난 내 안드로이드 전화 내가 xxx.org/mobile/mobile/mobile/mobile 같은 것을 얻고을 사용 ....

어떤 아이디어? 어떤 제안?

답변

1
#initliaze mobile 
    set $mobile ""; 

    if ($request_uri !~* "^/mobile.*"){ 
     set $mobile Y; 
    } 
    if ($http_user_agent ~* (iPhone|iPod|android|blackberry)) { 
     set $mobile "${mobile}E"; 
    } 

    if ($http_referer !~* "xxx\.org"){ 
     set $mobile "${mobile}S"; 
    } 

    if ($host ~* "xxx\.org"){ 
     set $mobile "${mobile}S"; 
    } 

    if ($mobile = YESS){ 
     rewrite^$scheme://$host/mobile$request_uri ; 
    } 
7

당신은 다른 위치를 사용한다 : BTW

location/{ 
    if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') { 
     return 301 /mobile$request_uri; 
    } 
} 

location /mobile/ { 

} 

, http://nginx.org/r/return

+0

모바일 위치가 비어 있어야합니까? – fenec

+0

귀하의 필요에 따라 다릅니다. 비어있을 수 있으므로 부모 컨텍스트에서 일부 값을 상속받습니다. 또는 필요한 모든 구성과 중첩 된 위치를 포함 할 수 있습니다. – VBart

3

을 사용 http://detectmobilebrowsers.com/ 그것은 모든 웹 서버 및 클라이언트/서버 사이드 언어에 대한 스크립트를 가지고있다.

+0

내가 nginx 설정에서 모바일 장치인지 감지하고 싶습니다 – fenec

+0

덕분에이 리소스는 nginx 설정도 포함합니다 – iMysak

관련 문제