Nginx极客时间:rewrite阶段的rewrite模块:重写URL(rewrite指令)

上一节 《rewrite阶段的rewrite模块:return指令》 中,提到了rewrite阶段的rewrite模块提供的两个指令:return指令error_page指令,用于做重定向及一些简单的返回。


除此之外,rewrite模块还提供了 rewrite指令
用于修改用户传入Nginx的URL的值,随后按照修改后的URL再进行匹配 location配置块,以完成重定向的目的。



rewrite指令的格式:
Nginx极客时间:rewrite阶段的rewrite模块:重写URL(rewrite指令)
Nginx极客时间:rewrite阶段的rewrite模块:重写URL(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!';
	}
}


正则表达式:
Nginx极客时间:rewrite阶段的rewrite模块:重写URL(rewrite指令)



上一篇:nginx配置location总结及rewrite规则写法 (若配置reload或restart不生效就stop start)


下一篇:Oracle VM VirtualBox 随系统自动启动虚拟机的方法