1. 程式人生 > >nginx反向跳轉 案例1

nginx反向跳轉 案例1

1.nginx 根據http_referer來跳轉

索引擎的搜尋頁面進到我們的網站時,就可以做一個跳轉。

其實,說實話,這樣做也沒有什麼太大意義,但是nginx的確可以實現這樣的操作:

在配置檔案的 server {} 中加入如下配置:

      if ($http_referer ~* "www.baidu.com") {
          rewrite ^/(.*)$ http://www.lishiming.net redirect;
      }
      if ($http_referer ~* "www.google.com") {
          rewrite ^/(.*)$ http://www.lishiming.net redirect;
      }

這樣配置以後,凡是從百度或者google點過來的請求都會跳轉到 www.lishiming.net

 

nginx實現301域名跳轉

bbaobelief關注0人評論1069人閱讀2012-12-20 13:41:05

 關於域名跳轉可以有多種方法:

1.在dns中設定URL重定向;

2.修改程式實現;

3.修改伺服器配置;

第一種方法:我的dns使用的是免費的dnspod,需網站接入1個月後才可以使用URL重定向服務;

第二種方法:據說對SEO不好,果斷放棄;

第三種方法:我的網站伺服器使用的是nginx,下面介紹nginx實現域名重定向的兩種方法。 

①單獨對需要跳轉的域名在server寫重定向

 
  1.     server{ 
  2.         listen       80; 
  3.         server_name  *.wphones.cn wphones.cn www.aiphones.cn  *.aiphones.cn aiphones.cn; 
  4.         access_log off; 
  5.         rewrite ^/(.*)$ http://www.wphones.cn/$1 permanent; 
  6.         } 
  7.   
  8.   server { 
  9.         listen       80; 
  10.         server_name  www.wphones.cn; 
  11.         ... 

②對兩個域名做一個host判斷,在server_name下新增

 
  1.   server { 
  2.       listen       80; 
  3.       server_name  www.pdavip.com test.pdavip.com; 
  4.       if ($host != test.pdavip.com) { 
  5.       rewrite ^/(.*)$ http://www.fashao.me/$1 permanent; 
  6.       } 
  7. ... 
  8.   }

需要注意的是if條件中的域名單引號。應該是中文的單引號,英文單引號會出現下面的錯誤提示。

我想許多配置不成功的朋友就是這個原因引起的。

關於nginx重定向規則請參考:

http://www.jefflei.com/post/1015.html

nginx重定向規則詳細介紹(原創)

2009年2月20日

閱讀評論發表評論

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
例如下面這段設定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.jefflei.com www.leizhenfang.com;
if ($invalid_referer) {
return 404;
}
}

 

 

-------------------------

 

--------