nginx rewrite(跳转)

本文详细介绍了Nginx的Rewrite功能,包括为什么使用Rewrite进行URL重写,如何实现跳转,实际应用场景,执行顺序,正则表达式语法以及location配置。还列举了多种配置实验,如基于域名、IP地址、旧域名跳转、参数匹配等的跳转示例,帮助读者深入理解Nginx的URL重写机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要弄rewrite跳转

1、为了使URL看起来更规范、合理
2、将动态URL伪装成静态地址提供服务
3、网址换新域名后,让旧的访问跳转到新的域名上
4、服务端某些业务调整

二、Rewrite跳转实现

Nginx:由ngx_http_rewrite_module模块管理的 ,需要开启支持URL重写、支持if条件判断,但不支持else。
PCRE支持:perl兼容正则表达式的语法规则匹配。
跳转:从一个location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误。
重写模块set指令:创建新的变量并设其值。

** rewrite使用nginx全局变量或者自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向。 **

三、Rewrite实际场景

1、Nginx跳转需要的实现方式
使用rewrite进行匹配跳转
使用if匹配全局变量后跳转
使用location匹配再跳转
2、rewrite放在server{},if{}location{}中(这边是生效位置)
location只对域名后边的除去传递参数外的字符串起作用
3、对域名或参数字符串
使用if全局变量匹配
使用proxy_pass反向代理

四、Rewrite执行顺序

1、先执行server块里面的rewrite指令
2、然后执行选定的location中的rewrite指令
3、最后执行选定的location中if中的rewrite指令

五、Nginx正则表达式

字符 说明
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或多次
+ 匹配前面的字符一次或多次
? 匹配前面的字符零次或一次
. 匹配除“\n”之外的任何单个字符
\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d 匹配纯数字
{n} 重复n次
{n,} 重复n次或更多次
[c] 匹配单个字符c
[a-z] 匹配a-z小写字母的任意一个
[a-zA-Z] 匹配a-z小写字母或A-Z大写字母的任意一个
\w 匹配字母或者数字或下划线或汉字
\s 匹配任意的空白符
\b 匹配单词的开始或结束
/
() 表达式的开始和结束位置
[] 定义匹配的字符范围

Rewrite命令语法

rewrite  <regex(正则)>     <replacement(跳转后的内容)>     [flag(rewrite支持的flag标记)]
标记 说明
last 相当于Apache的[L]标记,表示完成rewrite,一般用在server和if中
break 本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在location中。
redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url
permanent 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫更新url

一般last写在server和if中,break一般写在location中&

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值