Nginx:检测移动和转发到桌面

时间:2015-09-23 11:19:18

标签: nginx uwsgi

我有一个问题,我想检测域和设备,并将响应转发到nginx的桌面,www服务器部分。通过重写,这已经完成,但问题是url,被清除并用我的url替换,配置如下:

  server {
    listen       80  default_server;
    #this detects any domain
    server_name  ~^(www\.)?(?<domain>.+)$;
    root /home/someone/main;
    index index.html index.htm;

    set $mobile_rewrite do_not_perform;

    # this regex string is actually much longer to match more mobile devices
    if ($http_user_agent ~* '(iPhone|iPod|iPad|Android|BlackBerry|webOS|Windows Phone)') {
        set $mobile_rewrite perform;
    }

    location / {
       if ($mobile_rewrite = perform) {
           rewrite ^ http://m.someone.domain.com$request_uri? redirect;
           break;
       }
    }
}

我尝试了一种不同的方法,在m.someone.domain.com代码部分中使用了路径的别名,但是这在if位于该位置内部时不起作用。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下列方式修改if块。

location / {
       if ($mobile_rewrite = perform) {
           return 301 http://m.someone.domain.com$request_uri;
       }
}

由于您正在使用重写规则作为重定向,因此上述方法可能有效。重写也更重。

答案 1 :(得分:0)

location / {
   if ($mobile_rewrite = perform) {
       rewrite ^http://m.someone.domain.com$request_uri? / permanent;
   }
}

尝试此操作可能对您有用