当前位置: 首页 > news >正文

nginx rewrite地址重写

常用的nginx正则表达式

^匹配以...开头的字符串
$匹配以...结尾的字符串
^$^$表示空行
*匹配前面的字符0次或者多次(通配符*表示任意数量的任意字符)
+匹配前面的字符1次或多次
?匹配前面的字符0次或1次
.匹配除了“\n”之外的任意单个字符,[.\n]表示匹配包括“\n”在内的任意字符
.*匹配前面的任意1个字符,字符可以不存在
.+匹配前面的任意1个字符,字符必须存在
\将后面接着的字符记为一个特殊字符或者一个原意字符或一个向后引用
\n匹配换行符 
\t匹配制表符
\r匹配回车符
\d匹配纯数字
\w 匹配任意字母、数字或下划线
\s匹配任意空白符
{n}表示匹配前面的字符n次
{n,}匹配前面的字符至少n次
{n,m}匹配前面的字符n-m次
|表示或
()表示表达式整体

location和rewrite的区别

  • location 通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发
  • rewrite 对用户的URL访问路径进行重写,再重定向跳转访问重写后的路径http://www.xy101.com/scj.jgp  ->  http://www.xy101.com/error.png

一、location

1.location常用匹配类型

精准匹配、一版匹配、正则匹配

  • location  URL路径       一般前缀匹配
  • location = URL路径      精准匹配
  • location ^~ URL路径     前缀匹配
  • location ~ URL路径      正则匹配,区分大小写
  • location ~* URL路径     正则匹配,不分区大小写
  • location !~ URL路径     正则匹配取反
  • location !~* URL路径    正则匹配取反,不分区大小写

2.location匹配机制

优先级:精准匹配 =  >  最长前缀匹配 ^~  >  正则匹配 ~ ~* !~ !~*  >  一般前缀匹配 /XXXX  >  通用匹配 /

在没有合适的精准匹配的情况下,先看前缀匹配的长度,取最长匹配的location(如果此最长匹配是带有^~的则不再看正则匹配;如果此最长匹配是不带有^~的则会继续再看正则匹配)。

3.实际工作中三大匹配规则

1.网站首页匹配

location = / {
    root 网页根目录;
    index index.html;
}

2.网站静态页面,通过前缀匹配或通用匹配在nginx服务器本地处理

location ~ /static/ {
    root 目录;
}

location / {
    root 目录;
}

3.网站动态页面,通过匹配不同的动态网页文件后缀转发给不同的后端应用服务器处理

location \.php$ {
    fastcgi_pass PHP服务器地址:端口;
}

location \.jsp$ {
    proxy_pass TOMCAT服务器地址:端口;
}
 

二、rewrite

1.rewrite格式

rewrite  正则表达式  重写的地址  [标记位];

标记位说明
last本条规则匹配完成后,不终止重写后的url匹配,一般用在 server 和 if 中
break本条规则匹配完成即终止,终止重写后的url匹配,一般使用在 location 中
permanent返回302临时重定向,浏览器地址会显示跳转后的URL地址
redirect返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

2.rewrite默认情况下只对从域名后面的根目录 / 开始到传递参数的 ? 号前面的URL路径进行重写

#默认只对域名后面的URL部分重写
rewrite 正则表达式 /新URL;    http://域名/旧URL  ->  http://域名/新URL  #如果需要全域名路径重写需要加上协议和域名
rewrite 正则表达式 http://新域名/新URL;       http://旧域名/旧URL  ->  http://新域名/新URL;        http://域名/旧URL  --rewrite重写-->  http://域名/新URL -->  location匹配新URL路径跳转页面rewrite 正则表达式 /新URL  permanent;     #重写后会修改浏览器里的地址栏再重新访问http://域名/旧URL  --rewrite重写-->  http://域名/新URL --> 浏览器地址栏也会改为 http://域名/新URL 再发起一次访问请求 -->  location匹配新URL路径跳转页面location ~ URL路径正则表达式 {rewrite  正则表达式  重写的地址  [标记位];
}$request_uri
if ($uri ~ URL路径正则表达式) {rewrite  正则表达式  重写的地址  [标记位];
}


3. 习题

(1)将请求http://www.xy101.com/abc/123.html 跳转到首页http://www.xy101.com
(2)将请求http://www.xy101.com/abc/test.jpg 跳转到http://www.xy101.com/error.png
(3)将请求http://www.xy102.com/discuz/index.php 跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变
(4)将请求http://discuz.xy101.com/index.php 的访问跳转到http://www.xy101.com/discuz/index.php ,保证原域名后面的uri路径不变
(5)将对http://www.xy101.com 网站的所有请求跳转到自定义的维护页面或图片,本地可以访问

相关文章:

nginx rewrite地址重写

常用的nginx正则表达式 ^匹配以...开头的字符串$匹配以...结尾的字符串^$^$表示空行*匹配前面的字符0次或者多次(通配符*表示任意数量的任意字符)匹配前面的字符1次或多次?匹配前面的字符0次或1次.匹配除了“\n”之外的任意单个字符,[.\n]表…...

java+vue3+el-tree实现树形结构操作

基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下,业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…...

Oracle创建索引的LOGGING | NOLOGGING区别

在Oracle中,创建索引时的LOGGING和NOLOGGING选项主要影响索引创建过程中产生的重做日志(redo log)的数量。这两个选项对于性能和数据恢复能力有着显著的影响。以下是关于这两个选项的详细解释和区别: LOGGING 定义:当…...

GoogleDeepMind联合发布医学领域大语言模型论文技术讲解

Towards Expert-Level Medical Question Answering with Large Language Mod 这是一篇由Google Research和DeepMind合作发表的论文,题为"Towards Expert-Level Medical Question Answering with Large Language Models"。 我先整体介绍下这篇论文的主要内容&#x…...

Spark安装、解压、配置环境变量、WordCount

Spark 小白的spark学习笔记 2024/5/30 10:14 文章目录 Spark安装解压改名配置spark-env.sh重命名,配置slaves启动查看配置环境变量 工作流程maven创建maven项目配置maven更改pom.xml WordCount按照用户求消费额上传到spark集群上运行 安装 上传,直接拖拽…...

DeepSeek-V2-Chat多卡推理(不考虑性能)

TOC 本文演示了如何使用accelerate推理DeepSeek-V2-Chat(裁剪以后的模型,仅演示如何将权值拆到多卡) 代码 import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig from accelerate import init_empty_weights import sys from acce…...

算法题day42(补5.28日卡:动态规划02)

今天的动态规划都是二维的,与昨日不同。 一、刷题: 1.leetcode题目 62. 不同路径 - 力扣(LeetCode)(medium,) 解决: class Solution:def uniquePaths(self, m: int, n: int) -> int:dp …...

分治与递归

实验一:分治与递归 【实验目的】 深入理解分治法的算法思想,应用分治法解决实际的算法问题。 【实验性质】 验证性实验(学时数:2H) 【实验内容与要求】 1、设有n2k个运动员要进行网球循环赛。现要设计一个满足以…...

Spring中IOC容器

IoC IOC容器 IoC是一种设计思想,面向对象编程 Spring通过IoC管理所有Java对象的实例化和初始化,控制对象之间依赖关系 将IoC容器管理的Java对象称为Spring Bean,与new创建的对象没有区别 控制反转(IoC Inversion of Controle&a…...

php redis分布式锁

一,概念 在PHP中实现分布式锁通常可以使用数据库、缓存系统(如Redis)或者其他中央存储系统来保证在分布式系统中的数据一致性与同步。秒杀下单、抢红包等等业务场景,都需要用到分布式锁。 常规方案大概有七中 方案一:…...

kotlin 中的布尔

1、kotlin中内置的Boolean类型,可以有true与false两个值的布尔对象。 布尔值的内置运算有(跟很多语言如java、js一摸一样): ||——逻辑或&&——逻辑与!——逻辑非 fun main() {val a: Boolean trueval b: Boolean fa…...

有哪些ai聊天推荐?简单分享三款

有哪些ai聊天推荐?在当今数字化时代,人工智能(AI)聊天软件已经成为我们日常生活中不可或缺的一部分。无论是与朋友、家人还是同事交流,这些智能聊天软件都能为我们提供极大的便利。那么,市面上有哪些值得推…...

Python第二语言(十、Python面向对象(上))

目录 1. 标记变量的基础类型 2. 初识对象 2.1 使用对象组织数据 3. 成员变量 3.1 类和类成员的定义 3.2 成员变量和成员方法使用 3.3 成员方法的定义语句 4. 类和对象class Clock: def ring(self): 4.1 创建类对象的语法:对象名 类名称() 4.2 用生活中的…...

SolidWorks 2016 SP5安装教程

软件介绍 Solidworks软件功能强大,组件繁多。 Solidworks有功能强大、易学易用和技术创新三大特点,这使得SolidWorks 成为领先的、主流的三维CAD解决方案。 SolidWorks 能够提供不同的设计方案、减少设计过程中的错误以及提高产品质量。SolidWorks 不仅…...

为什么高考志愿只选计算机专业?

刚刚高考结束,不知道各位学弟学妹考的怎么样啊? 高考毕竟是对十二年寒窗苦读的评判,也是很多人改变命运的机会。很多同学每天等待出分的过程很煎熬,既吃不好也玩不好(os:这种同学还挺多的)。 但…...

GPT大模型微调-提高垂直领域回答质量

微调一个大模型并测试微调后的效果是一个很好的学习实践。下面是一个逐步指导,帮助你使用一个较小的预训练大模型进行微调,并测试其效果。我们将使用 Hugging Face 的 Transformers 库和一个较小的预训练模型,如 DistilBERT。这个库非常流行且易于使用。 实现步骤 步骤 1:…...

全网首发-Docker被封后的代理设置教程

最近上交、科大以及阿里的一些docker镜像,好像都因为不可控力导致无法访问。 所以,之前好多正常的一些镜像的打包都会报错: 比如: #1 [internall load build definition from Dockerfile#1transferring dockerfile:972B done#1 D…...

代码随想录算法训练营第五十七天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列

代码随想录算法训练营第五十七天 1143.最长公共子序列 题目链接:1143.最长公共子序列 确定dp数组以及下标的含义:dp[i][j] :以下标i - 1为结尾的text1,和以下标j - 1为结尾的text2,最长重复子数组长度为dp[i][j]确…...

RocketMQ事务性消息

RocketMQ事务性消息是一定能保证消息发送成功的 事务消息发送步骤: (1)发送方将半事务消息发送至RocketMQ服务端。 (2)RocketMQ服务端将消息持久化之后,向发送方返回ack确认消息已经发送成功。由于消息为…...

mysql (事物)

一.什么是事物 事物是一组操作的集合,不可分割的工作单位,事物会把所有的操作当作一个整体一起向系统提交或撤销操作请求,就是这些操作要么一起成功要么一起失败。 二.事物操作 (这个就是一个理解) 1.事务特性 原子性…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

【C++进阶篇】智能指针

C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...