Nginx用户代理重写

时间:2013-10-08 23:24:23

标签: nginx webserver

目标:我想根据以下条件重写:

  • 用户代理是Iphone或Blackberry
  • uri中没有“redirect = false”。

我有以下代码,我认为可行,但没有。如果设置了用户代理,它只会重定向,但会忽略$uri条件。

location / {
  if ( $uri  ~* "redirect=false" ) {
    set $var_redirect F;
  }

  if ( $http_user_agent ~* "iPhone|BlackBerry" ) {
    set $var_redirect "${var_redirect}M";
  }

  if ( $var_redirect = M ) {
    rewrite ^ http://m.domain.com redirect;
  }
}

另一个选项是仅在位置为/但不是子文件夹的情况下将重定向错误条件替换为

1 个答案:

答案 0 :(得分:1)

如果参数中发送了redirect=false,我认为您需要在$uri条件中将$args替换为redirect=false,之后nginx版本也可以使用{{1} }}