nginx配置文件rewrite规则

article/2025/10/21 20:29:29

nginx配置文件rewrite规则

文章目录

  • nginx配置文件rewrite规则
    • @[toc]
    • if
    • Rewite 规则介绍
    • flag标志位
    • 配置rewrite规则
      • last二次转发

if

语法:if (condition) {…}

应用场景:

server段
location段
常见的condition

变量名(变量值为空串,或者以“0”开始,则为false,其它的均为true)
以变量为操作数构成的比较表达式(可使用=,!=类似的比较操作符进行测试)
正则表达式的模式匹配操作
~:区分大小写的模式匹配检查
~:不区分大小写的模式匹配检查
!和!
:对上面两种测试取反
测试指定路径为文件的可能性(-f,!-f)
测试指定路径为目录的可能性(-d,!-d)
测试文件的存在性(-e,!-e)
检查文件是否有执行权限(-x,!-x)

Rewite 规则介绍

Rewrite规则可以实现对url的重写,以及重定向

作用场景
URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等
SEO优化
维护:后台维护、流量转发等
安全

注:nginx官方文档:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

配置语法

Syntax: rewrite regex replacement flag;
Default:——Context:server、location、if

rewrite语法

server {rewrite {规则} {定向路径} {重写类型} ;
}

1、规则:可以是字符串或者正则来表示想匹配的目标url

2、定向路径:表示匹配到规则后要定向的路径,如果规则里有正则,则可以使用$index来表示正则里的捕获分组

flag标志位

last : 相当于Apache的[L]标记,表示完成rewrite
break : 停止执行当前虚拟主机的后续rewrite指令集
redirect : 返回302临时重定向,地址栏会显示跳转后的地址
permanent : 返回301永久重定向,地址栏会显示跳转后的地址
因为301和302不能简单的只返回状态码,还必须有重定向的URL,这就是return指令无法返回301,302的原因了。这里 last 和 break 区别有点难以理解:

last一般写在server和if中,而break一般使用在location中
last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配
breaklast都能组织继续执行后面的rewrite指令

配置rewrite规则

示例:

//先在主页目录下创建一个image的目录。
[root@localhost html]# mkdir images
[root@localhost html]# ls
50x.html  images  index.html
[root@localhost html]# cd images/
[root@localhost images]# ls
[root@localhost images]# echo "hello kg" >images.html
[root@localhost images]# ls
images.html
[root@localhost images]# pwd
/usr/local/nginx/html/images//进入配置文件配置rewrite重写规则,匹配images的目录
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conflocation /images {rewrite ^/images/(.*)$ /images/images.html break;  }
//匹配根下的images目录然后,images目录下的任意字符,都转发到/images/images.html。所以此时我们不管怎么访问,只要是在/images/目录下随便输入什么字符都可以匹配到。
[root@localhost images]# systemctl restart nginx.service 
[root@localhost images]# curl 192.168.171.142/images/
hello kg
[root@localhost images]# curl 192.168.171.142/images/aaaz
hello kg
[root@localhost images]# curl 192.168.171.142/images/aaaaaaaa
hello kg
//如果这个时候访问的文件发生了改变,比如名字发生了改变如 
那么怎么样才能让那个访问方式继续访问到文件的内容。
[root@localhost images]# ls
images.html
[root@localhost images]# mv images.html imgs.html
[root@localhost images]# ls
imgs.html
[root@localhost images]# 
//修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conflocation /images {rewrite ^/images/(.*)$ /images/imgs.html break;}
[root@localhost ~]# !systemctl
systemctl restart nginx.service
//匹配到的images/目录下的任意字符都转发给后面的/images/imgs.html  所以就算文件名字发生了改变照样能完成之前的效果,因为我们在后面转发的位置指向了文件。
[root@localhost ~]# curl 192.168.171.142/images/1314520
hello kg
[root@localhost ~]# curl 192.168.171.142/images/131452000
hello kg

last二次转发

二次转发是利用了last的特性,匹配到了也不会停止匹配会继续转发到下一个rewrite的规则上去,直到转发到的规则里有break,或者匹配失败。

//修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conflocation /images {rewrite ^/images/(.*)$ /images/imgs.html last;}location /imgs {rewrite ^/imgs/(.*)$ http://www.baidu.com break;}
//上面的location匹配到images目录下的imgs.html文件,然后因为last的原因所以它不会停止,会找到下一个location然后继续匹配,所以这里我写了一个rewrite规则,这里如果上面匹配到以imgs开头以任意字符结尾的就转发到百度。
[root@localhost ~]# !systemctl
systemctl restart nginx.service

在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wA3hkNrp.shtml

相关文章

nginx Rewrite 规则

一:nginx Rewrite 规则 1:rewrite的概念: Nginx Rewrite功能是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向功能。Rewrite指令只能放在server {},location {},…

Nginx高级之Rewrite规则

进阶阶段的回顾: Nginx进阶之静态Web资源服务 Nginx进阶之代理服务 Nginx进阶之负载均衡服务 Nginx进阶之缓存服务和动静分离 作用及应用场景 作用: 实现对URL的重写以及对匹配(正则表达式)的url的重定向 场景: 1. URL访问跳转, 支持开发设计 ① 页面跳转 ② 兼容…

Nginx配置请求转发location及rewrite规则

location / {# 精确匹配 / ,主机名后面不能带任何字符串[ configuration A ] }location / {# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求# 但是正则和最长字符串会优先匹配[ configuration B ] }location /documents/ {# 匹配任何以 …

Rewrite规则简介

Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块&…

rewrite详解

rewrite模块 URI跟URL介绍 什么是uri?统一标识符,拿www.abc.com/aw/wd/举例,那么rui就是/aw/wd/这部分数据(也有可能是图片,html网页,如果是伪静态的话,那就得看配置是啥玩意了 什么是url? 统一定位符&#xff…

Nginx基础——Rewrite规则

点击上方“芋道源码”,选择“置顶公众号” 技术文章第一时间送达! 源码精品专栏 精尽 Dubbo 原理与源码专栏( 已经完成 69 篇,预计总共 75 篇 )中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring …

F280049C Crossbar X-BAR

文章目录 X-BAR9.1 输入X-BAR9.2 ePWM、CLB和GPIO输出X-BAR9.2.1 ePWM X-BAR9.2.1.1 ePWM X-BAR架构 9.2.2 CLB X-BAR9.2.2.1 CLB X-BAR架构 9.2.3 GPIO输出X-BAR9.2.3.1 GPIO输出X-BAR架构9.2.4 X-BAR标志 总结 X-BAR 交叉开关(在本章中称为X-BAR)提供…

BCGControlBar Pro 31.2 正式版-Key

什么是 MFC 的 BCGControlBar Pro? BCGControlBar(“Business Components Gallery ControlBar”)是一个 MFC 扩展库,企鹅180846090允许您创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)和一组丰富…

BCGControlBar Library for .NET 7.1.1 Crack

什么是 BCGControlBar Library for .NET? BCGControlBar Library for .NET 是 100% 托管代码工具包,用 C/CLI 编写,面向 Microsoft .NET Framework 2.0 或更高版本。该库包含许多高度可定制、完全可设计的组件,使您能够创建最复杂…

BCGControlBar v12的向导使用图解

BCGControlBar专业版是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010、Microsoft Visual Studio(打印、用户定制工具栏、菜单等)和其他一些知名产品的高级用户界面。 首先从网上下载BCGControlBar v12资源 &…

MFC界面控件BCGControlBar v33.4 - 日历、属性网格组件升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.4已正式发布了,该版本包含了对Windows 11 Mica materi…

BCG学习(一)——BCGControlBar安装与配置

最近工作中需要用到BCG相关的知识,趁着全民防疫、居家隔离这段时间正好学习一下,作此笔记,记录学习过程和心得体会。话不多说,开整! 简介 下载、安装与配置 例程编译与运行 简介 BCG是MFC的一个扩展库,可以…

MFC扩展库BCGControlBar Pro v33.5新版亮点 - 控件、脚本管理增强

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v33.5已正式发布了,此版本包含了Ribbon(功能区)自定义…

MFC界面控件BCGControlBar v33.4 - 支持Win 11 Mica material主题

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.4已正式发布了,该版本包含了对Windows 11 Mica materi…

MFC界面控件BCGControlBar v33.4 - 各子控件全面升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.4已正式发布了,该版本包含了对Windows 11 Mica materi…

MFC界面控件BCGControlBar v33.3 - 升级Ribbon Bar自定义功能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 该版本包含了增强的Ribbon自定义、新的日期/时间数字指示器、带有文本对齐的组控件、多行支持以及其他一些新功…

MFC界面控件BCGControlBar v33.3 - 可视化管理器和主题更新

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版和BCGSuite for MFC v33.3已正式发布了,该版本包含了增强的Ribbon自定义、新的…

BCGControlBar使用说明

BCGControlBar使用说明 1.BCGControlBar简介1.1 概述1.2 开发环境1.3 安装 1.BCGControlBar简介 1.1 概述 BCG是MFC的一个扩展库,可以用来构建类似于Microsoft Office 2003/2007/2010/2013/2016 和 Microsoft Visual Studio-like(打印、用户定制工具栏、…

【MySQL】物化视图

物化视图是相对于视图而言的,但是两者实际上并没有什么关系就如java/javaScript一样 首先mysql的视图不是一种物化视图,他相当于一个虚拟表,本身并不存储数据,当sql在操作视图时所有数据都是从其他表中查询出来的。者带来的问题是…

Oracle——物化视图

文章目录 含义物化视图的语法物化视图的创建1、自动刷新的物化视图 ON COMMIT2、非自动刷新的物化视图 ON demand 关于手动刷新物化视图的删除资料参考 含义 什么是物化视图? 物化视图,通俗点说就是物理化的视图。 什么叫物理化? 将视图以表…