2013-10-08 49 views
0

目的:我想根據以下條件來重寫:Nginx的用戶代理重寫

  • 用戶代理或者是iPhone或黑莓
  • 沒有一個在URI「重定向=假」。

我有下面的代碼,我認爲會工作,但沒有。如果設置了用戶代理,它只會一直重定向,但會忽略$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

如果redirect=false中的參數發送,我相信你需要$args更換$uriredirect=false的情況下,後來的nginx版本也可以使用if($arg_redirect = false)