当前位置:首页 > 服务器技术 > nginx

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指令) - 文章图片




【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!