咱們看官方手冊的說明:正則表達式
Syntax: return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if
複製代碼
location ~ (.*).js$ {
return 500; #返回500狀態碼
}
location ~ (.*).js$ {
return 500 "error"; #返回500狀態碼 同時打印error
}
location ~ (.*).js$ {
return 302 http://www.baidu.com; # 302狀態碼,跳轉到百度
}
複製代碼
注意當使用 return url 指令操做的時候,只能使用302(臨時重定向) 301(永久重定向) 相似跳轉,而不能使用500或其餘狀態碼。bash
rewrite 指令是一個經常使用的指令,根據訪問url定位真實地址cookie
Syntax: rewrite regex replacement [flag];
Default: —
Context: server, location, if
複製代碼
下面表示當訪問地址以 .js 後綴開頭的時候ui
若是匹配正則表達式成功,就直接重寫到js目錄下。url
location ~ (.*).js$ {
rewrite (.*) /js/$1 break;
}
複製代碼
注意這個js的目錄地址, 是相對於root指定的目錄爲根目錄尋找的。 rewrite第三個參數爲break,表示中斷,再也不繼續向下執行.spa
last
使用了last 指令,rewrite 後會跳出location
break
使用break直接終止繼續進行匹配
redirect
表示302臨時重定向
permanent
表示301永久重定向
複製代碼
Syntax: rewrite_log on | off;
Default: rewrite_log off;
Context:http, server, location, if
複製代碼
Syntax: if (condition) { ... }
Default: —
Context: server, location
複製代碼
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
set $id $1;
}
if ($request_method = POST) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
}
複製代碼