目录

前言

一.Rewrit跳转场景

二.rewrite跳转实现

三.Rewrite实际场景

四.nginx正则表达式

五.flag标记说明

六.location分类

七.正则匹配的常用表达式

八.location优先级

九.比较rewrite 和 location

十.基于域名跳转

十一.基于旧域名跳转


前言

rewrite是实现url重写的指令,根据正则regex匹配,并跳转到replacement,flag用来控制跳转规则,取值包括break, last, redirect, permanent四种。

一.Rewrit跳转场景

将动态URL地址伪装成静态地址提供服务
网址换新域名后,让旧的访问跳转到新的域名上
服务端某些业务调整

二.rewrite跳转实现

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

三.Rewrite实际场景

1.Nginx跳转需求的实现方式
使用rewrite进行匹配跳转        实现跳转的模块
使用if匹配全局变量后跳转       实现跳转的条件
使用location匹配再跳转          匹配URL后跳转的条件

2.rewrite放在 server{}、if{}、location{} 段中
location只对域名后边的除去传递参数外的字符串起作用

3.对域名或参数字符串
使用if全局变量匹配
使用proxy_pass反向代理

四.nginx正则表达式

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

五.flag标记说明

标记               说明
last                相当于Apache的[L]标记,表示完成rewrite
break            本条规则匹配完成即终止,不再匹配后面的任何规则
redirect         返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url
permanent    返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫更新url

六.location分类

location = patt {} [精准匹配]
location patt {} [一般匹配]
location ~ patt {} [正则匹配]

七.正则匹配的常用表达式

标记                          说明
~                               执行一个正则匹配,区分大小写
~*                              执行一个正则匹配,不区分大小写
!~                               执行一个正则匹配,区分大小写不匹配
!~*                             执行一个正则匹配,不区分大小写不匹配
^~                              普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他location
=                                普通字符精准匹配。也就是完全匹配
@                               定义一个命名的location,使用在内部定向时

八.location优先级

相同类型的表达式,字符串长的会优先匹配
按优先级排列

= 类型(优先级:精确性高,优先级越高)
^~ 类型表达式(普通字符前缀匹配)
正则表达式( ~ 和 ~ *)类型(区分大小写)
常规字符串匹配类型,按前缀匹配
通用匹配(/),如果没有其它匹配,任何请求都会匹配到(静态、动态、根匹配)

九.比较rewrite 和 location

1.相同点
都能实现跳转

2.不同点
rewrite是在同一域名内更改获取资源的路径
location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器

3.rewrite会写在location里,执行顺序
执行server块里面的rewrite指令
执行location匹配
执行选定的location中的rewrite指令

十.基于域名跳转

端口映射

vim /usr/local/nginx/conf/nginx.conf


此时访问www.wk.com时会自动跳转到www.kai.com上面进行访问

十一.基于旧域名跳转

vim /usr/local/nginx/conf/nginx.conf

Nginx-Rewrite相关推荐

  1. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

  2. nginx rewrite 参数和例子

    nginx rewrite 参数和例子 推荐参考地址: Mailing list ARChives 官方讨论区 http://marc.info/?l=nginx Nginx 常见应用技术指南[Ngi ...

  3. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  4. Nginx Rewrite规则初探

    Nginx  rewrite(nginx url地址重写) Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要N ...

  5. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  6. php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...

    一般php的开发者本地使用的都是使用apache服务器,使用伪静态的时候每次都需要转换成nginx rewrite规则,于是做了个在线将Apache htaccess Rewrite伪静态规则自动转换 ...

  7. nginx rewrite php参数,Nginx rewrite伪静态配置参数详解

    nginx rewrite 伪静态配置参数和使用例子(附正则使用说明) 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大 ...

  8. 使用lua实现nginx rewrite

    2019独角兽企业重金招聘Python工程师标准>>> 上一次上线只是简单的把手机端的流量切换手机端的首页,有点粗糙,现在需要把电脑端相应的页面切换到电脑端的页面,直接用nginx自 ...

  9. nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面

    静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 带参数的 ...

  10. 常用nginx rewrite重定向-跳转实例

    常用nginx rewrite重定向-跳转实例: 1,将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://con ...

最新文章

  1. ios html 有白色边框,html – 仅在iPad上的桌子的单元格之间非常薄的白色边框
  2. AI如何在安防行业更加深入?可从超高清视频监控切入
  3. python下载大文件-python 大文件
  4. Mybatis Plus——[Could not set property 'id' of '***' with value]解决方案
  5. 数据库面试题【十二、存储引擎选择】
  6. 阿里P7大牛整理!BAT大厂面试基础题集合,成功入职字节跳动
  7. CTL_CODE定义中Method的说明
  8. java的for循环取出数据只是拿到最后一个_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
  9. Ubuntu通过vnc连接Windows主机的问题解决
  10. C#导入导出Excele数据
  11. day17 10.jdbc的crud操作
  12. python2048游戏实训报告_Python 实现 2048 游戏
  13. android 发布最新系统更新包,安卓升级包(安卓补丁包更新)
  14. 用计算器算以2为底的对数
  15. Ch6 深度前馈神经网络
  16. 数字IC设计工程师要具备哪些技能
  17. 电力电子器件的系统组成和分类
  18. 网聊是不是就要劈腿上床?
  19. Open vSwitch
  20. 关于JSCH使用自义定连接池说明

热门文章

  1. MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION
  2. String s=new String(xback)和String s=xback的区别?
  3. B/S程序设计 经典好书(备忘)
  4. MySQL学习博客第一篇
  5. 如何使用Facebook进行选品使用
  6. ESP32 常用蓝牙AT指令使用例程
  7. mysql用了索引为什么还是查询很慢?
  8. MobileNet V2 模型分析+解读
  9. Linux man 命令详细介绍
  10. 观《一个也不能少》后感