上一节 《rewrite阶段的rewrite模块:return指令》 中,提到了rewrite阶段的rewrite模块提供的两个指令:return指令
和 error_page指令
,用于做重定向及一些简单的返回。
除此之外,rewrite模块还提供了 rewrite指令
:
用于修改用户传入Nginx的URL的值,随后按照修改后的URL再进行匹配 location配置块,以完成重定向的目的。
rewrite指令的格式:
regex
:表示原始URL的正则表达式;
replacement
:待替换的URL:
当replacement以 http:// 或者 https:// 或者 $schema 开头,则直接返回 302 重定向;
flag
:替换URL后的处理动作,flag可以是以下几个类型:
--last : 继续向下执行,用replacement这个URI进行新的location匹配
--break : 停止当前脚本指令的执行
--redirect : 返回 302 重定向
--permanent : 返回 301 重定向
rewrite指令使用举例:
# 目录结构:
html/first/1.txt
html/second/2.txt
html/third/3.txt
server {
root html/;
location /first {
rewrite /first(.*) /second$1 last; # rewrite regex_uri replacement flag;
# replacement = /second$1, 即使用 /second$1 替代 /first(.*),再进行location的匹配
# flag = last, 即在替换URI后继续向下执行return语句
return 200 'first!';
}
location /second {
rewrite /second(.*) /third$1 break;
return 200 'second!';
}
location /third {
return 200 'third!';
}
}
正则表达式: