萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> nginx 301 302重定向跳轉配置

nginx 301 302重定向跳轉配置

   首先看一個完整代碼示例,關於nginx 301 302跳轉的。

  301跳轉設置:

  server {

  listen 80;

  server_name downcc.com;

  rewrite ^/(.*) http://www.downcc.com/$1 permanent;

  access_log off;

  }

  302跳轉設置:

  server {

  listen 80;

  server_name downcc.com;

  rewrite ^/(.*) http://www.downcc.com/$1 redirect;

  access_log off;

  }

  在看下關於nginx 301 302跳轉的詳細說明文檔

  server {

  server_name downcc.com;

  rewrite ^/(.*) http://www.downcc.com/$1 permanent;

  }

  last – 基本上都用這個Flag。

  break – 中止Rewirte,不在繼續匹配

  redirect – 返回臨時重定向的HTTP狀態302

  permanent – 返回永久重定向的HTTP狀態301

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

  rewrite命令

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

  rewrite 正則表達式 替換目標 flag標記

  flag標記可以用以下幾種格式:

  last – 基本上都用這個Flag。

  break – 中止Rewirte,不在繼續匹配

  redirect – 返回臨時重定向的HTTP狀態302

  permanent – 返回永久重定向的HTTP狀態301

  特別注意:

  last和break用來實現URL重寫,浏覽器地址欄的URL地址不變,但是在服務器端訪問的路徑發生了變化;

  redirect和permanent用來實現URL跳轉,浏覽器地址欄會顯示跳轉後的URL地址;

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

  location /download/ {

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

  }

  nginx重定向的IF條件判斷

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

  正則表達式

  如:

  匹配判斷

  ~ 為區分大小寫匹配; !~為區分大小寫不匹配

  ~* 為不區分大小寫匹配;!~為不區分大小寫不匹配

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

  if ($http_user_agent ~ MSIE) {

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

  }

  文件和目錄判斷

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

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

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

  -x和!-x判斷文件是否可執行

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

  if (!-e $request_filename) {

  proxy_pass http://127.0.0.1;

  }

  return

  返回http代碼,例如設置nginx防盜鏈:

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

  valid_referers none blocked www.downcc.com www.test1.com;

  if ($invalid_referer) {

  return 404;

  }

  }

copyright © 萬盛學電腦網 all rights reserved