nginx 301 302重定向(xiàng)跳轉配置教(jiāo)程
首先(xiān)看一個完整代碼(mǎ)示例(lì),關於nginx 301 302跳轉(zhuǎn)的。
301跳轉設置:
server {
listen 80;
server_name chithemodel.com;
rewrite ^/(.*) http://www.chithemodel.com/$1 permanent;
access_log off;
}
302跳轉設置:
server {
listen 80;
server_name chithemodel.com;
rewrite ^/(.*) http://www.chithemodel.com/$1 redirect;
access_log off;
}
在看下關於nginx 301 302跳轉的詳細(xì)說明文檔
server {
server_name chithemodel.com;
rewrite ^/(.*) http://www.chithemodel.com/$1 permanent;
}
last – 基本上都用(yòng)這個Flag。
break – 中止Rewirte,不在繼續匹配(pèi)
redirect – 返回臨(lín)時重(chóng)定向的HTTP狀態302
permanent – 返(fǎn)回永久(jiǔ)重定向的HTTP狀態301
Nginx的重定向用到了Nginx的HttpRewriteModule,下(xià)麵簡單(dān)解釋以下如何使用的方法(fǎ):
rewrite命令
nginx的rewrite相當於apache的rewriterule(大(dà)多數情(qíng)況(kuàng)下可以把原有apache的rewrite規則加(jiā)上引號就可以直接使(shǐ)用),它可以用在server,locations 和IF條件判(pàn)斷塊中,命令格式如(rú)下:
rewrite 正(zhèng)則表達式 替換(huàn)目標 flag標記(jì)
flag標記可以用以下幾種格(gé)式:
last – 基本上都用(yòng)這個Flag。
break – 中止Rewirte,不在繼續匹配
redirect – 返回臨時重定(dìng)向的HTTP狀態302
permanent – 返回永久重(chóng)定(dìng)向(xiàng)的HTTP狀(zhuàng)態301
特別注意:
last和break用來實現URL重寫(xiě),瀏覽器地址欄的URL地址(zhǐ)不變,但是在服務器端訪問(wèn)的路徑發生了變化;
redirect和permanent用(yòng)來實現URL跳轉,瀏覽(lǎn)器地址欄(lán)會顯示跳(tiào)轉(zhuǎn)後的URL地址;
例如下麵這段設定nginx將某個目錄下麵的文件重定向到另(lìng)一(yī)個目錄,$2對應第二個括號(.*)中對應的(de)字符串:
locations /download/ {
rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break;
}
nginx重定向的IF條件(jiàn)判斷
在server和locations兩種情況(kuàng)下可以使用(yòng)nginx的IF條(tiáo)件(jiàn)判斷,條(tiáo)件可以為以下(xià)幾(jǐ)種:
正則表達式(shì)
如:
匹配判斷
~ 為區分大小寫匹配; !~為區分大小寫不匹(pǐ)配
~* 為不區分大小寫匹配;!~為不區分大小寫不匹配(pèi)
例如下麵(miàn)設定nginx在用戶使用ie的使用重(chóng)定向到/nginx-ie目錄下:
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie/$1 break;
}
文件和目錄判斷
-f和!-f判斷是否存在文(wén)件
-d和!-d判斷是(shì)否存在目錄
-e和!-e判(pàn)斷是(shì)否存在文件或目錄
-x和(hé)!-x判斷文件是(shì)否可執行(háng)
例如(rú)下麵設定nginx在文件和(hé)目錄不存在的時候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
return
返(fǎn)回http代碼,例如(rú)設置nginx防(fáng)盜(dào)鏈:
locations ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.chithemodel.com www.test1.com;
if ($invalid_referer) {
return 404;
}
}
關鍵詞:nginx,重(chóng)定向
閱讀本文後您(nín)有什(shí)麽感想? 已有 人(rén)給出評價(jià)!
- 1
- 1
- 4
- 4
- 2
- 2