nginx访问路径匹配方法

目录

一:匹配方法

二:location使用:

三:rewrite使用


一:匹配方法

location和rewrite是两个用于处理请求的重要模块,它们都可以根据请求的路径进行匹配和处理。

二:location使用:

1:简单匹配
简单匹配是按照字面量路径来匹配请求的URL。这种匹配方法是最直接且最容易理解的。


location /images/ {  
    # 匹配任何以/images/开头的URL  
}


2:最长字符串匹配
当有多个location使用简单匹配时,Nginx会选择匹配路径最长的那个。


location / {  
    # 匹配所有URL,但优先级较低  
}  
location /images/ {  
    # 匹配以/images/开头的URL,优先级高于上面的location /  
}


3:正则表达式匹配
使用正则表达式可以定义更复杂的路径匹配规则。正则表达式匹配以~*(不区分大小写)或~(区分大小写)开始。


location ~* \.(gif|jpg|png)$ {  
    # 匹配所有以.gif、.jpg或.png结尾的URL,不区分大小写  
}
4:通配符匹配
Nginx不支持像Apache那样的通配符(如*),但可以使用正则表达式来达到类似的效果。然而,有时候提到的通配符匹配实际上是指正则表达式的使用。

5:精确匹配
使用=可以实现精确匹配,即完全匹配指定的路径。


location = /logo.png {  
    # 只匹配/logo.png这个URL  
}

6:匹配优先级
当存在多个可能匹配的location时,Nginx会按照一定的优先级顺序来选择一个进行处理。优先级从高到低大致如下:

精确匹配(=)具有最高优先级;
其次是按文件中的顺序匹配的正则表达式(~和~*),先被定义的先匹配;
然后是最长字符串匹配;
最后是匹配任意路径的location /。


7:命名位置
虽然这不是一种路径匹配方法,但值得一提的是,你可以使用@符号创建命名的location,这些位置不能直接由客户端请求访问,但可以在内部重定向或作为其他指令的目标。


location / {  
    try_files $uri $uri/ @custom;  
}  
location @custom {  
    # 这里是自定义错误页面或其他处理逻辑  
}
 

三:rewrite使用

1:正则表达式匹配:
rewrite模块支持使用正则表达式进行匹配和替换。正则表达式可以用来描述复杂的匹配模式,并实现精确的URL重写。


rewrite ^/oldpath(.*)$ /newpath$1 permanent;


2:位置匹配:
rewrite模块也支持基于请求的URL位置进行匹配和重写。可以使用location块中定义的匹配规则来指导rewrite操作。


location = /oldpage {  
    rewrite ^ /newpage;  
}


3:替换参数
在重写URL时,可以使用替换参数来修改URL中的某些部分。例如,使用$1到$9来表示正则表达式中的捕获组,并替换到新的URL中。


rewrite ^/(.*)/(.*)$ /profile.php?user=$1&id=$2 last;


4:重定向
使用rewrite模块可以将请求重定向到其他URL。通过指定重定向的目标URL,可以将用户请求转发到其他服务器或地址。
rewrite ^/oldurl$ /newurl redirect;


5:临时重定向
使用last关键字可以将重定向标记为临时重定向,这意味着浏览器会收到一个临时的响应,并自动重新发起新的请求到目标URL。


rewrite ^/oldurl$ /newurl last;


6:永久重定向
使用permanent关键字可以将重定向标记为永久重定向,这意味着浏览器会收到一个永久的响应,并记住新的URL,以后直接访问旧的URL时会直接跳转到新的URL。
rewrite ^/oldurl$ /newurl permanent;
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一键制作电子样册,提升企业品牌形象

​电子样册作为一种新型的宣传方式,具有许多优势。首先,它打破了传统纸质宣传册的局限性,可以随时随地展示企业的产品和服务。其次,电子样册可以通过多媒体形式展示企业的品牌形象,包括图片、视频、文字等多种形式&…

Github 2023-12-31 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Swift项目1Java项目1HTML项目1Astro项目1Python项目1C项目1Dart项目1Jupyter Notebook项目1C项…

Linux/Unix/国产化操作系统常用命令(二)

目录 后CentOS时代国产化操作系统国产化操作系统有哪些常用Linux命令关于Linux的LOGO 后CentOS时代 在CentOS 8发布后,就有了一些变化和趋势,可以说是进入了"后CentOS时代"。这个时代主要表现在以下几个方面: CentOS Stream的引入…

知识库:提升客服效率的利器

相信大家都有过这样的经历:在需要帮助或解决问题时,与客服沟通却遇到了冗长的等待时间、低效的回答和重复的解决方案。这些问题不仅令人沮丧,也给企业带来了巨大的挑战。然而,随着技术的发展,客服系统中的知识库正逐渐…

求一个整数二进制中1的个数(三种方法详解)

越过寒冬 前言 今天复习了一些操作符的知识,看到了这道题,并且发先有三种解题思路,觉得有趣,据记下来与诸位分享一下。 题目 写一个函数,给定一个整数,求他的二进制位中1的个数 思路1 既然是二进制位那…

UI5与后端的文件交互(二)

文章目录 前言一、开发Action1. 创建Structure2. BEDF添加Action3. class中实现Action 二、修改UI5 项目1. 添加一个按钮2. 定义事件函数 三、测试及解析1. 测试2. js中提取到的excel流数据3. 后端解析 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使用文件进行…

Java学习苦旅(十六)——List

本篇博客将详细讲解Java中的List。 文章目录 预备知识——初识泛型泛型的引入泛型小结 预备知识——包装类基本数据类型和包装类直接对应关系装包与拆包 ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList遍历 结尾 预备知识——初识泛型 泛型的引入 我…

Glide加载不出图片与请求浏览器资源时中文转码问题

报错代码如图:Image load failed: Failed to load resourse 首先确保你的图片 URL 地址是正确的,可以通过在浏览器中直接访问这个 URL 来测试。另外,确保 URL 地址不包含特殊字符或空格,以免影响加载。 然后确定依赖库没有问题&am…

lwip发送组播数据问题

1、今天测试组播包发现,组播数据只能在默认网卡发送成功,多次交叉测试依然这样,所以和网卡的配置无关 (我的是双网卡) 2、最后搜源码看,才发现有一段代码如下: struct netif * ip4_route(cons…

四、HTML 属性

属性是 HTML 元素提供的附加信息。 一、HTML 属性 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 二、 属性实例 HTML 链接由 <a> 标签定义。链接的地…

【hyperledger-fabric】将智能合约部署到通道

简介 本文主要来自于B站视频教学视频&#xff0c;也主要参看了官方文档中下图这一章节。针对的是测试网络中go语言的部分&#xff0c;部署测试网络。附上B站的教学视频 B站教学视频第一小节&#xff0c;附上 官方文档 1.启动网络 # 跳转到指定的目录 cd /root/fabric/fabri…

QT----Visual stdio翻金币案例,附源码

历经一个月&#xff0c;各种事情磕磕绊绊&#xff0c;终于结束了&#xff0c;自己还是太菜了 案例的文档写的教程已经很详细&#xff0c;这边主要是记录一些问题 github代码 gitee代码 1、图片无法加载 一开始加载首页图片和标题出不来&#xff0c;结果是paintEvent重写的字打…

Redis(一)

1、redis Redis是一个完全开源免费的高性能&#xff08;NOSQL&#xff09;的key-value数据库。它遵守BSD协议&#xff0c;使用ANSI C语言编写&#xff0c;并支持网络和持久化。Redis拥有极高的性能&#xff0c;每秒可以进行11万次的读取操作和8.1万次的写入操作。它支持丰富的数…

虚幻UE 材质-进阶边界混合之距离场限制PDO范围

基础边界混合那篇文章&#xff1a;虚幻UE 材质-边界混合之PDO像素深度偏移量 可以通过抖动来进行混合&#xff0c;但是有问题的点在与抖动发生的位置只需要在两物体的交界处 所以本篇文章会通过距离场限制来限制抖动的位置&#xff0c;防止其他地方发生抖动影响画面。 文章目录…

【IDEA——连接MySQL数据库,创建库和表】

IDEA——连接MySQL数据库&#xff0c;创建库和表 1、打开idea数据库操作页面&#xff08;两种打开方法都可以&#xff09; 2、点击加号&#xff0c;选择Driver,方便导入连接数据库的驱动jar包 然后选择MySQL进行添加驱动 3、点击上一步页面的左上方的Data Sources连接本地数据…

组播(多播)原理及代码

单播地址标识单个 IP 接口&#xff0c;广播地址标识某个子网的所有 IP 接口&#xff0c;多播地址标识一组 IP 接口。 单播和广播是寻址方案的两个极端&#xff08;要么单个要么全部&#xff09;&#xff0c;多播则意在两者之间提供一种折中方 案。多播数据报只应该由对它感兴…

职场商务英语口语“自助餐”用英文怎么说?柯桥外语培训

“自助餐”用英语怎么说&#xff1f; ● 其实很简单&#xff0c;“自助餐”的英文就是&#xff1a;Buffet。 例句&#xff1a; At lunchtime, theres a choice between the buffet or the set menu.15857575376 午饭时&#xff0c;可以选择自助餐或套餐。 We are going to …

AutoPDMS的工程文件突然不见了……

1.用户好不容易一个工程的应力分析计算通过&#xff0c;不料&#xff0c;第二天使用时提示以下信息&#xff0c;对用户来说简直如同噩梦降临。 分析&#xff1a;要么用户移动了文件&#xff0c;要么用户删除了文件&#xff0c;用户两者都否定。无论怎么样文件不会莫名不见了&am…

linux(mysql下载以及操作)

下载mysql 查看镜像 docker images 下载MySQL镜像 mysql/mysql-server:8.0 创建文件夹&#xff0c;创建配置文件和放数据文件 mkdir -p /data/mysql/{conf,,data} 创建配置文件 my.cnf 写入配置文件my.cnf的代码 [client] default-character-setutf8[mysql] de…

反编译有哪些优势

在现在这个信息化的时代&#xff0c;软件开发中的编程是关键步骤&#xff0c;了解编程的反编译同样至关重要。对于大多数人来说&#xff0c;编程和反编译似乎是两个相对比较陌生的概念&#xff0c;但是都在软件开发周期中起着至关重要的作用。尤其是反编译&#xff0c;它在多个…