技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

nginx 301 302重定向跳轉(zhuǎn)配置

來源:技術(shù)員聯(lián)盟┆發(fā)布時間:2019-01-31 00:18┆點擊:

  首先看一個完整代碼示例,關(guān)于nginx 301 302跳轉(zhuǎn)的。

  301跳轉(zhuǎn)設(shè)置:

  server {

  listen 80;

  server_name downcc.com;

  rewrite ^/(.*) $1 permanent;

  access_log off;

  }

  302跳轉(zhuǎn)設(shè)置:

  server {

  listen 80;

  server_name downcc.com;

  rewrite ^/(.*) $1 redirect;

  access_log off;

  }

  在看下關(guān)于nginx 301 302跳轉(zhuǎn)的詳細說明文檔

  server {

  server_name downcc.com;

  rewrite ^/(.*) $1 permanent;

  }

  last – 基本上都用這個Flag。

  break – 中止Rewirte,不在繼續(xù)匹配

  redirect – 返回臨時重定向的HTTP狀態(tài)302

  permanent – 返回永久重定向的HTTP狀態(tài)301

  Nginx的重定向用到了Nginx的HttpRewriteModule,下面簡單解釋以下如何使用的方法:

  rewrite命令

  nginx的rewrite相當(dāng)于apache的rewriterule(大多數(shù)情況下可以把原有apache的rewrite規(guī)則加上引號就可以直接使用),它可以用在server,location 和IF條件判斷塊中,命令格式如下:

  rewrite 正則表達式 替換目標(biāo) flag標(biāo)記

  flag標(biāo)記可以用以下幾種格式:

  last – 基本上都用這個Flag。

  break – 中止Rewirte,不在繼續(xù)匹配

  redirect – 返回臨時重定向的HTTP狀態(tài)302

  permanent – 返回永久重定向的HTTP狀態(tài)301

  特別注意:

  last和break用來實現(xiàn)URL重寫,瀏覽器地址欄的URL地址不變,但是在服務(wù)器端訪問的路徑發(fā)生了變化;

  redirect和permanent用來實現(xiàn)URL跳轉(zhuǎn),瀏覽器地址欄會顯示跳轉(zhuǎn)后的URL地址;

  例如下面這段設(shè)定nginx將某個目錄下面的文件重定向到另一個目錄,$2對應(yīng)第二個括號(.*)中對應(yīng)的字符串:

  location /download/ {

  rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;

  }

  nginx重定向的IF條件判斷

  在server和location兩種情況下可以使用nginx的IF條件判斷,條件可以為以下幾種:

  正則表達式

  如:

  匹配判斷

  ~ 為區(qū)分大小寫匹配; !~為區(qū)分大小寫不匹配

  ~* 為不區(qū)分大小寫匹配;!~為不區(qū)分大小寫不匹配

  例如下面設(shè)定nginx在用戶使用ie的使用重定向到/nginx-ie目錄下:

  if ($http_user_agent ~ MSIE) {

  rewrite ^(.*)$ /nginx-ie/$1 break;

  }

  文件和目錄判斷

  -f和!-f判斷是否存在文件

  -d和!-d判斷是否存在目錄

  -e和!-e判斷是否存在文件或目錄

  -x和!-x判斷文件是否可執(zhí)行

  例如下面設(shè)定nginx在文件和目錄不存在的時候重定向:

  if (!-e $request_filename) {

  proxy_pass ;

  }

  return

  返回http代碼,例如設(shè)置nginx防盜鏈:

  location ~* .(gif|jpg|png|swf|flv)$ {

  valid_referers none blocked www.test1.com;

  if ($invalid_referer) {