Nginx-Rewrite
1、Rewrite的定义
rewrite功能就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在 server { }, location { }, if { }中,并且只能对域名后边的除去传递的参数外的字符串起作用。 例如location 只能对域名后边的除去传递的参数外的字符串起作用,例如http ://www. kgc.com/index.ph p?id= 1 只对/i ndex. php 重写。如果想对域名或参数字符串起作用, 可以使用if 全局变星匹配, 也可以使用proxy_pass反向代理。
1.1:rewrite跳转场景
- 可以调整用户浏览的URL , 看起来更规范, 合乎开发及产品人员的需求。
- 为了让搜索引擎搜录网站内容及用户体验更好, 企业会将动态URL 地址伪装成静态地址提供服务。
- 网址换新域名后, 让旧的访问跳转到新的域名上。例如, 访问京东的360buy. com 会跳转到jd .com 。
- 根据特殊变簸、目录、客户端的信息进行URL 调整等。
1.2:rewrite跳转实现
Nginx 是通过ngx_http_rewrite_module 模块支持url 重写、支持if 条件判断, 但不支持else 。另外该模块需要PCRE 支持,应在编译N ginx 时指定PCRE 支持,默认已经安装。
根据相关变量重定向和选择不同的配置, 从一个location 跳转到另一个location , 不过这样的循环最多可以执行10 次, 超过后Nginx 将返回500 错误。同时, 重写模块包含set 指令,来创建新的变量并设其值, 这在有些情景下非常有用的, 如记录条件标识、传递参数到其他location 、记录做了什么等等。rewrite 功能就是使用Nginx 提供的全局变量或自己设置的变量, 结合正则表达式和标志位实现url 重写以及重定向。
1.3: Nginx 正则表达式
![常用的正则表达式元字符](https://img-blog.csdnimg.cn/direct/ca1ef6c1500e402db8c79961d316839a.png)
2:Nginx Rewrite 基本操作
2.1:Rewrite 语法
Rewrite 命令的语法如下所示,其中regex 表示正则匹配规则、rep lacement 表示跳转后的内容、flag 表示rewrite 支持的flag 标记。
rewrite< regex>< replacement> [flag];
flag 标记说明:
- last: 相当千Apache 的[L]标记, 表示完成rewrite 。
- break: 本条规则匹配完成即终止, 不再匹配后面的任何规则。
- redirect: 返回302 临时重定向, 浏览器地址会显示跳转后的URL 地址, 爬虫不会更新url(因为是临时) 。
- permanent: 返回301 永久重定向, 浏览器地址栏会显示跳转后的URL 地址, 爬虫更新url 。
last 和break 区别是: last 一般写在server 和if 中, 而break 一般使用在location 中。last 不终止重写后的urI 匹配, 即新的url 会再从server走一遍匹配流程, 而break 终止重写后的匹配。
2.2:Location 分类
location 大致可以分为三类, 语法如下:
location = patt{}[精准匹配]
location patt{}[一般匹配]
location~ patt {}[正则匹配]
- ~ : 表示执行一个正则匹配, 区分大小写。
- ~*: 表示执行一个正则匹配, 不区分大小写。
- !~: 表示执行一个正则匹配, 区分大小写不匹配。
- !~* : 表示执行一个正则匹配, 不区分大小写不匹配。
- ^~: 表示普通字符匹配。使用前缀匹配。如果匹配成功, 则不再匹配其他location 。
- = : 进行普通字符精确匹配, 也就是完全匹配。
- @ : 它定义一个命名的location , 使用在内部定向时, 例如error_page, try_files 。
2.3:Location 优先级
在Nginx 的location 配置中location 的顺序没有太大关系。匹配优先级和location 表达式的类型有关: 相同类型的表达式,字符串长的会优先匹配。
- 等号类型( = ) 的优先级最高。一旦匹配成功, 则不再查找其他匹配项。
- ^~类型表达式。一旦匹配成功, 则不再查找其他匹配项。
- 正则表达式类型( ~和~* )的优先级次之。
- 常规字符串匹配类型。按前缀匹配。
- 通用匹配( /) ' 如果没有其它匹配, 任何请求都会匹配到。
从功能看rewrite 和location 似乎有点像, 都能实现跳转,主要区别在千rewrite 是在同一域名内更改获取资源的路径, 而location 是对一类路径做控制访问或反向代理,还可以proxy_pass 到其他机器。很多情况下rewrite 也会写在location 里, 它们的执行顺序如下:
(1) 执行server 块里面的rewrite 指令。
(2) 执行location 匹配。
(3) 执行选定的location 中的rewrite 指令。
相关文章:
![](https://img-blog.csdnimg.cn/direct/ca1ef6c1500e402db8c79961d316839a.png)
Nginx-Rewrite
1、Rewrite的定义 rewrite功能就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在 server { }, location { }, if { }中,并且只能对域名后边的除去传递的参数外的字符串起作用。 例如location…...
![](https://img-blog.csdnimg.cn/direct/ed3c754282384a789faa7d7b4b894b7f.png)
2024 年 Python 基于 Kimi 智能助手 Moonshot Ai 模型搭建微信机器人(更新中)
注册 Kimi 开放平台 Kimi:https://www.moonshot.cn/ Kimi智能助手是北京月之暗面科技有限公司(Moonshot AI)于2023年10月9日推出的一款人工智能助手,主要为用户提供高效、便捷的信息服务。它具备多项强大功能,包括多…...
![](https://img-blog.csdnimg.cn/direct/270256cc2a6648f2906f4e919b5e11aa.png)
关于接口多态,何时使用接口名创建对象?何时使用子类创建对象?
接口创建对象只能创建他的实现类,所以会出现两种创建方式: 1、接口 对象名 new 类名 2、子类对象 对象名 new 类名 举个例子,swimming是一个接口,flog是他的一个实现类,重写了swimming的eat()方法 子类对象 对象名…...
![](https://img-blog.csdnimg.cn/img_convert/eb23e3fbbd7e7751e216e02267efbc54.jpeg)
短视频热恋进行时:成都柏煜文化传媒有限公司
短视频热恋进行时:情感与创意的碰撞与融合 在数字时代的浪潮中,短视频以其独特的魅力,成为了当代人表达情感、分享生活的新宠。它如同一个浓缩的时空胶囊,将那些瞬间的美好、感人的故事、创意的火花,封装在短短几十秒…...
![](https://img-blog.csdnimg.cn/direct/50e1917d0afd4966bac95ee0288c6e2e.png)
springBoot多数据源使用、配置
又参加了一个新的项目,虽然是去年做的项目,拿来复用改造,但是也学到了很多。这个项目会用到其他项目的数据,如果调用他们的接口取数据,我还是觉得太麻烦了。打算直接配置多数据源。 然后去另一个数据库系统中取出数据…...
![](https://img-blog.csdnimg.cn/img_convert/400981c590bd0740ab37179c5b5f74be.png)
打破安全设备孤岛,多源威胁检测与响应(XDR)如何构建一体化安全防线
在数字化和信息化迅猛发展的当下,安全设备孤岛现象成为网络安全治理中的一大挑战。在多元化的市场环境中,不同厂商的安全设备因数据格式与系统兼容性的差异,导致信息流通受阻、共享困难,形成孤立的安全防线。 安全设备孤岛现象不仅…...
![](https://img-blog.csdnimg.cn/direct/c8e374ee7945461caac7ff0751bdd38c.png)
Android SurfaceFlinger——概述(一)
一、基础介绍 SurfaceFlinger 是 Android 系统中的一个关键组件,负责管理屏幕显示的合成和渲染。 服务角色:SurfaceFlinger 作为一个系统服务独立运行,它不依赖于任何应用程序进程,而是由系统启动并持续运行。窗口管理:…...
![](https://img-blog.csdnimg.cn/direct/88925f8383e342ac966aa34dd4610671.jpeg)
工业 web4.0,UI 风格令人赞叹
工业 web4.0,UI 风格令人赞叹...
![](https://img-blog.csdnimg.cn/direct/8939d548a4e14cf79861d11af83ee11b.png)
HarmonyOS 角落里的知识 —— 状态管理
一、前言 在探索 HarmonyOS 的过程中,我们发现了许多有趣且实用的功能和特性。有些总是在不经意间或者触类旁通的找到。或者是某些开发痛点。其中,状态管理是ArkUI开发非常核心的一个东西,我们进行了大量的使用和测试遇到了许多奇奇怪怪的问…...
![](https://www.ngui.cc/images/no-images.jpg)
TDengine数据迁移
前言 taosdump 是一个支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个运行中的 TDengine 集群中的工具应用程序。 taosdump 可以用数据库、超级表或普通表作为逻辑数据单元进行备份,也可以对数据库、超级 表和普通表中指定时间段内的数据记录…...
![](https://img-blog.csdnimg.cn/direct/2f46e040403c495b884a26d3069f5db6.png)
使用ZIP包安装MySQL及配置教程
在本教程中,我们将指导您完成使用ZIP包安装MySQL的过程,并对配置文件进行必要的修改,以及解决可能遇到的问题。本示例以MySQL 5.7.44为例,但步骤同样适用于其他版本如MySQL 8.3.0等。请根据实际需要选择适合的版本下载:…...
![](https://www.ngui.cc/images/no-images.jpg)
Java基础入门day64
day64 web项目 数据库设计 在小米商城主页,主要的内容是多种商品类型的展示,分别有手机,智能穿戴,笔记本平板,家电,生活电器,厨房电器,智能家具等大的七个分类,根据这个…...
![](https://img-blog.csdnimg.cn/direct/e54ccb5d3e5747a59db0f699863077e8.jpeg)
高德地图轨迹回放/轨迹播放
前言 本篇文章主要介绍高德地图的轨迹回放或播放的实现过程,是基于vue2实现的功能,同时做一些改动也是能够适配vue3的。其中播放条是用的是element UI中的el-slider组件,包括使用到的图标也是element UI自带的。可以实现轨迹的播放、暂停、停…...
![](https://img-blog.csdnimg.cn/direct/853474a62f4347a68dc53fe3c8067724.jpeg#pic_center)
像素、像素密度、位图和矢量图
像素、像素密度、位图和矢量图 像素 -- 图像元素pt分辨率ppidpi 点阵图 - bitmap常见的类型 矢量图点阵图 vs 矢量图参考小结 像素、矢量图等概念在前端开发中经常遇到,这里做一个简单的梳理。 像素 – 图像元素 做前端开发的经常遇到它。像素是图像的最小单位&am…...
![](https://img-blog.csdnimg.cn/direct/e7b3f326e07641f598110addf152a7ab.png)
第二证券股市资讯:昨夜!全球新“股王”诞生
昨晚,英伟达成全球市值榜首公司。 当地时间6月18日,美股三大指数小幅收高,标普500指数与纳指再创前史新高。标普500指数涨0.25%,道指涨0.15%,纳指涨0.03%。 AI热潮推动英伟达大涨,市值逾越微软、苹果&…...
![](https://img-blog.csdnimg.cn/direct/ceb0e268eefa4acea70860f6802f826e.jpeg)
自动水位雨量站:用于水库防汛预警
TH-SW2自动水位雨量站是一种现代化的监测设备,主要用于水库等水域的防汛预警系统。它通过集成水位和雨量监测功能,为水库的管理和调度提供实时、准确的数据支持。 工作原理: 自动水位雨量站通过内置的水位计和雨量计实时监测水库的水位变化和…...
![](https://img-blog.csdnimg.cn/direct/e2007ed77c374b21bcd08f3af4cc6d98.png)
苍穹外卖---新增员工(P16-P20)
一、需求分析和设计 (1)产品原型 一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务。后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。 新增员工…...
![](https://img-blog.csdnimg.cn/direct/c5c96fe5ad93462d9398410bdab19520.png#pic_center)
Windows10 利用QT搭建SOEM开发环境
文章目录 一. SOEM库简介二. 安装WinPcap三. SOEM(1.4)库安装(1) 编译32位库(2) 编译64位库 四. 运行SOEM示例代码五. WIN10下利用QT构建SOEM开发环境 一. SOEM库简介 SOEM(Scalable Open EtherCAT Master 或 Simple Open EtherCAT Master)是一个开源的…...
![](https://img-blog.csdnimg.cn/direct/babb1d93ad874d93b460c917ff73a124.png#pic_center)
SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件二(补充)
SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件二(补充) 如果你想在cmd命令窗口内看到程序运行,即点开弹出运行窗口,关闭时exe自动关闭。 需要再launch4j上进行如下操作: 这样转换好的exe就可以有控制台了…...
![](https://img-blog.csdnimg.cn/direct/a30d7acfb7f249cf95ff25563e458b3c.png)
【kyuubi k8s】kyuubi发布k8s执行spark sql
背景 依据上一篇kyuubi与spark集成,并发布spark sql到k8s集群,上一篇的将kyuubi和spark环境放在本地某台服务器上的,为了高可用,本篇将其打包镜像,并发布到k8s。 其实就是将本地的kyuubi,spark࿰…...
![](https://img-blog.csdnimg.cn/direct/f3ee7d41d63d4a9d85baba620c5e45b6.jpeg)
机械装配革新者:3D工艺大师智慧赋能,装配无忧
机械装配,简而言之,就是将各个零件和部件按照严格的技术要求组装起来,使之成为完整且符合标准的机械产品。这一过程不仅要求技术操作的精确性,更强调每个零件之间的完美配合,以确保产品的最终质量和性能达到最优。 常规…...
![](https://www.ngui.cc/images/no-images.jpg)
【C++】const和函数参数
一、const 在 C 中,const 关键字用于定义常量。将 const 关键字放在指针的不同位置,其含义也不同。 1、指向常量的指针 const int* ptr; ptr 是一个指向 const int 的指针,ptr 所指向的值不能通过 ptr 修改,但指针本身可以改变…...
![](https://www.ngui.cc/images/no-images.jpg)
2024zjb
单选331/600 下列不属于常用反爬虫手段动是() A访问频度 B验证码校验 C账号权限 D人工筛 题目答案 正确答案:D 330/600 下列不属于聚焦网络爬虫动常用策略动是 A基于深度优先动爬取策略 B基于内容评价动爬取策略 C基于链接结构评价动爬取策略 D基于语境图动爬取策略 题目答案…...
![](https://www.ngui.cc/images/no-images.jpg)
线程池的艺术:深度解析Java多线程并发性能的优化之道
1. 引言 在高并发的Java应用开发中,线程池作为管理和复用线程资源的核心机制,扮演着举足轻重的角色。合理、高效地使用线程池不仅能减少资源消耗、提高系统响应速度,还能有效控制并发线程数量,保证系统的稳定性和性能。 2. 线程池的基本概念与优势 线程池是一种管理和复用…...
![](https://img-blog.csdnimg.cn/direct/d5bd45d3be6a47c8a4ff17a583146c66.png)
Ubuntu server 24 (Linux) 新增磁盘 lvm 动态扩容磁盘空间
1 新增一块硬盘 #查看 sudo fdisk -l #重新分区,转换成lvm类型 sudo fdisk /dev/sdb 2 查看磁盘 df -h3 lvm 配置 #查看lvm逻辑卷 sudo lvdisplay #创建物理卷 sudo pvcreate /dev/sdb1 #扩展卷组 sudo vgextend ubuntu-vg /dev/sdb1 #扩展逻辑卷 sudo lvexte…...
![](https://img-blog.csdnimg.cn/direct/d4a3f7989b534e9b8b67a6fa085b1129.jpeg)
Linux C编译器从零开发三
AST语法树 BNF抽象 expr equality equality relational ("" relational | "!" relational)* relational add ("<" add | "<" add | ">" add | ">" add)* add mul ("" …...
![](https://img-blog.csdnimg.cn/direct/04c356c46d784e6f81dcbb76e379495a.png)
02-ES6新语法
1. ES6 Proxy与Reflect 1.1 概述 Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。 Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue3中VueRouter基本用法及与Vue2中路由使用差异解析
Vue Router 在 Vue3 中被重写,使用了 Vue3 的 Composition API。使用上跟Vue2 相比有些不同,需要注意。 首先,让我们来看一下 Vue3 中 VueRouter 的基本使用方法: 安装 Vue Router: npm install vue-routernext创建…...
![](https://img-blog.csdnimg.cn/direct/766e55bd5f664323bd43071e3accf4bb.png#pic_center)
10.Docker Compose容器编排
文章目录 Compose简介安装和卸载步骤核心概念compose文件两要素 使用步骤Compose常用命令微服务测试本地编码打包编写Dockerfile文件构建镜像 不使用Compose调试使用Compose调试WordPress测试验证增量更新 Compose简介 docker建议我们每一个容器中只运行一个服务,因为docke…...
![](https://www.ngui.cc/images/no-images.jpg)
【算法——动态规划(从dfs回溯开始推导dp)】
基础理论 递归: 递:大问题分解子问题的过程 ; 归:产生答案 dp:只进行归;用已知的最底层的(递归的边界,搜索树的底),推出未知 《视频索引》 一句话&…...
![](/images/no-images.jpg)
专业提供网站建设服务包括哪些/百度有钱花人工客服
C# 正则表达式正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。定义正则表达式下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。字符转义字符类定位点分组构造限定符反向引用构造备…...
![](https://img-blog.csdnimg.cn/2020060214260719.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3gxMTMxMjMwMTIz,size_16,color_FFFFFF,t_70)
网站设计软件有哪些/佛山网站建设技术托管
参考书: 《STM32F1 FreeRTOS开发手册_V1.1》正点原子 《STM32F1开发指南-库函数版本_V3.3》正点原子 《嵌入式实时操作系统uCOS-II》(第二版) 《嵌入式实时操作系统uCOS-II原理及应用》任哲 文章目录1 简介2 uCOS-II中的任务3 中断与时钟4 任务的同步与通信5 信号量…...
省政府网站集约化建设/站长工具查询域名
先这里把unassigned_shards的节点手动删除掉,然后重新配置你的集群 这是应急之策,暂时留用,之后理解后重新解决...
![](/images/no-images.jpg)
灌阳县建设局门户网站/seo怎么做整站排名
文件描述符 文件描述符编辑内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。…...
![](/images/no-images.jpg)
响应式网站的设计尺寸/深圳seo培训
单一替换原则(一个类只完成自己的事, 别多管闲事)接口隔离原则(客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上)依赖转置原则(面向接口编程, 尽量…...
做博客网站用什么模板/代刷网站推广免费
我眼中2013大学生就业形势本系列文章由ex_net(张建波)编写,转载请注明出处。 http://blog.csdn.net/ex_net/article/details/8913020 作者:张建波 邮箱: 281451020qq.com 电话:13577062679 欢迎来电交流&am…...