nginx rewrite 规则

news2024/11/17 16:40:14

生效位置

rewrite 可以写在 server 、 location、 if  配置段内

格式

rewrite   regex   replacement   [flag]

regex是匹配的正则表达式。

只会处理$request_uri部分,不会匹配$host

replacement 是跳转的URI。

可以以http:// 或者https:// 开头, 也可以省掉$host 直接写$request_uri部分。

这部分支持变量。

flag 是控制uri行为的,可写可不写。

有break(中止)、last、redict(302临时重定向)、permanent(301永久重定向)。

用户浏览器访问俩个重定向效果一致。对于搜索引擎和爬虫,301更有利于SEO(搜索引擎优化)

http://和https:// 开头的flag部分建议使用permanent

uri不变,转换域名的用法:

location / {
    rewrite /(.*) http://www.baidu.com/$1 permanent ;
}

( )括起来的部分 在后面用 $n 调用,$1 表示第一个括号内容,$2 表示第二个括号内容。

location / {
    rewrite /.* http://www.baidu.com$request_uri  permanent;
}

这里replacement部分使用了变量

server {
    listen 80;
    server_name www.baidu.coml;
    root /tmp/abc.com;
    index index.html;
    rewrite /(.*) /abc/$1 redirect;
}

这样写,每次把uri改写后又会被server识别一次,导致陷入循环,

比如一开始www.baidu.com/a66 会变成 www.baidu.com/abc/abc/abc/.../abc/abc/a66

nginx 最大的 rewrite 次数是 50 次,最终是会停下来,但是离我们要的结果差太远了。

对于免得陷入循环

解决方法一:

rewrite /(.*) /abc/$1 break;

加上break,改写一次自动停止。

解决办法二:

if ($request_uri !~ '^/abc/')
{
    rewrite /(.*) /abc/$1 redirect;
}

当不匹配 /abc/ 开头的uri的时候才进入rewrite ,这种写法比较明确。

直接curl只能看到301的状态

 curl -I 看标头,有跳转后的地址记录

curl  -L  ——  会进行跳转后继续访问。

因为每次都能进入到 location / 中,可能导致不断循环发生。

这里只是重复访问了50次。

如果有多层目录结构,还会发生循环嵌套。

这里直接flag部分加break的方法可以只控制跳一次,但也不完美。

因为location / 作为入口,如果用户就是要访问  $host/www/test666 时候,会被迫访问到 $host/www/www/test666 ,因为无可奈何都要加一次。如果要控制,这需要用 if 来加以判断,不以www开头的时候,再进行跳转。

如此则只会跳转一次

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

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

相关文章

自适应多因素认证:构建不可破解的企业安全防线|身份云研究院

打开本文意味着你理解信息安全的重要性,并且希望获取行业最佳实践来保护你所在组织的信息安全。本文将带你了解多因素认证(MFA:Multi-Factor-Authentication)对于企业信息安全的重要性以及实施方法。 多因素认证(MFA&…

尚医通(十五)医院排班管理

目录一、医院排班管理需求1、页面效果2、接口分析二、科室列表(接口)1、添加service接口和实现2、添加DepartmentController方法三、科室列表(前端)1、添加隐藏路由2、封装api方法3、添加/views/hosp/schedule.vue组件四、排班日期…

torch相比于numpy都干了什么——torch入门

Torch已深度学习框架被熟知,但它首先是作为Numpy的存在。我们首先比较一下Torch和Numpy有什么不同,为什么可以实现深度学习。 从数据结构看起。Numpy的强大之处就在于array的数据结构,它是多维数组,要求所有元素是相同类型的&…

人与人之间赚钱的差距在哪里呢?体现在这几个因素中

同样生而为人,同样接受九年制义务教育的熏陶,但最终赚钱能力却千差万别,因此也就形成了我们所谓的圈层,阶层,穷人和富人。 一个人的赚钱能力跟什么有关?资源技能、学历、认知,这些都会决定一个人…

搞清楚动态库和静态库的区别

什么是库文件 一般来说,一个程序,通常都会包含目标文件和若干个库文件。经过汇编得到的目标文件再经过和库文件的链接,就能构成可执行文件。库文件像是一个代码仓库或代码组件的集合,为目标文件提供可直接使用的变量、函数、类等…

visual studio 改变界面语言

在使用visual studio 2019 时,开始是英文界面,后面变成了中文界面。但是看视频教学时有的是英文界面,我就想回到英文界面,所以有切换界面语言的需要。其实操作很简单:工具-> 选项 打开界面在界面里选择环境&#xf…

axios中的resolvePromise为什么影响promise状态

axios的取消请求意思很简单,就是在发送请求后不久停止发送请求 本文探讨的是v0.22.0之前的CancelToken API,因为在阅读源码交流的时候发现很多朋友不理解为什么CancelToken中的resolvePromise会影响到实例对象身上的promise状态 即下图所示代码&#xf…

为乡村振兴塑形铸魂,VR全景助力美丽乡村建设

民族要复兴,乡村必振兴,文旅部一直推动乡村文化产业和乡村旅游融合发展,大力推进乡村文化数字化,为乡村文化振兴注入新动能。为了更好的给乡村振兴塑形铸魂,VR智慧乡村助力数字化乡村建设发展,利用VR全景展…

CMD SET % 字符串截取

:: 使用 CSDN Cobol 格式化风格。:: *. 百分号 (%) :: (1) % 作为变量引导符,有几种用途:在命令行窗口中,用 1 个 % 引号变量; 在批处理文件中,用 2 个 % 引号变量。[1] 两个 % 夹着一个变量名称,表示取(扩…

HashMap如何避免内存泄露问题

HashMap对于Java开发人员来说,应该是一种非常非常熟悉的数据结构了,应用场景相当广泛。 本文重点不在于介绍如何使用HashMap,而是关注在使用HashMap过程中,可能会导致内存泄露的情况,下面将以示例的形式展开具体介绍。…

【Java】properties 和 yml 的区别

文章目录properties和yml的区别① 定义和定位不同② 语法不同③ yml更好的配置多种数据类型④ yml可以跨语言⑤ 总结properties和yml的区别 这几天刚好看到Spring Boot当中有两种配置文件的方式,但是这两种配置方式有什么区别呢? properties和yml都是S…

hadoop考试应急

概述 四大特点:大量化、快速化、多元化、价值化 关键技术:采集、存储管理、处理分析、隐私和安全 计算模式:批处理、流、图、查询分析计算 Hadoop处理架构 了解就好 2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000…

Leetcode 每日一题 2341. 数组能形成多少数对

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

《Java并发编程之美》- 线程终止的方法

多线程并发编程之美 等待线程执行终止的 join 方法 执行的代码 public class MyThreadThree {public static void main(String[] args) throws InterruptedException {Thread thread_anew Thread(()->{try {Thread.sleep(1000);} catch (InterruptedException e) {e.prin…

信息系统项目管理师真题精选(三)

1、以下关于我国现阶段电子政务建设的叙述中,不正确的是:( )。A.我国电子政务建设一直坚持统一规划,加强领导,需求主导,突出重点的原则B.我国电子政务建设一直坚持整合资源,拉动产业…

静态代理和动态代理的区别以及实现过程

前言 代理模式是一种设计模式,能够使得在不修改源目标的前提下,额外扩展源目标的功能。即通过访问源目标的代理类,再由代理类去访问源目标。这样一来,要扩展功能,就无需修改源目标的代码了。只需要在代理类上增加就可…

《真象还原》读书笔记——第五章 保护模式进阶,向内核迈进(特权级,更新)

5.4 特权级深入浅出 5.4.1 特权级哪点事 计算机 访问 可分为访问者和被访问者。 建立特权机制为了通过特权来检查合法性。 0、1、2、3级,数字越小,权力越大。 0特权级是系统内核特权级。 用户程序是3特权级,被设计为“有需求就找操作系统”…

QT+OpenGL光照

QTOpenGL光照 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 颜色 现实生活中看到的物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的颜色 太阳光能被看见的白光是多找演的的组合…

Linux部署项目

一、手动部署 1、终端直接部署(前台运行) (1)在IDEA中开发SpringBoot项目并打成jar包 (2)将jar包上传到Linux服务器 mkdir /usr/local/app #创建目录,将项目jar包放到此目录(3&…

C++——哈希4|布隆过滤器

目录 布隆过滤器 完整代码 布隆过滤器应用 布隆过滤器的查找 布隆过滤器删除 布隆过滤器优点 布隆过滤器缺陷 布隆过滤器海量数据处理 布隆过滤器 位图只能映射整形,而对于字符串却无能为力。 把字符串用哈希算法转成整形,映射一个位置进行标…