6

我正在尝试设置我的 nginx 以将来自移动设备的所有请求重定向到 /mobile/$uri 我想出了这个解决方案,但它似乎不起作用。是语法问题还是对整个重定向概念的误解。

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

当我使用我的安卓手机时,我得到了类似 xxx.org/mobile/mobile/mobile/mobile....

有什么想法吗?有什么建议吗?

4

3 回答 3

7

您应该使用不同的位置:

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

location /mobile/ {

}

顺便说一句,http://nginx.org/r/return

于 2012-07-09T12:23:57.227 回答
4

使用http://detectmobilebrowsers.com/它有适用于所有网络服务器和客户端/服务器端语言的脚本。

于 2012-09-07T08:51:43.803 回答
4
    #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 ;
    }
于 2014-09-23T19:00:46.393 回答