nginx rewrite(重定向)

使用 Nginx 实现 URL 的重定向 有些URL的重定向,新URL不需要继承原URL的参数,例如网站首页,这种情况,在Nginx配置文件的location中使用return302的方式进行跳转即可。我们日常分享一个网站地址时,常常会有这样的效果,同样一个网址,在电脑的浏览器打开,是一种效果,而在手机的浏览器打开,就会展现出另一种更适合手机显示的效果。二、使用Nginx,依据终端的不同,跳转到不同的页面,电脑打开,跳转到PC端使用的网页,手机打开,跳转到手机端使用的网页。老话说的好取乎上,得其中;... 阅读详情

目录

一、什么是rewrite

二、rewrite使用场景

三、rewrite配置语法

四、常用的nginx正则表达式

五、nginx 配置文件里 location 项

1、localtion 作用

2、location 可以分为三类

3、location 的常用匹配规则

4、location 的 优先级与匹配规则

5、location 示例说明

六、案例

七、rewrite总结


一、什么是rewrite

       Rewrite及URL重写,主要是实现地址重写,以及重定向,就是把输入Web的请求重定向到其他URL的过程

二、rewrite使用场景

  • URL地址跳转,列入用户访问old.com将其跳转到oldboy.com,或者当用户通过http的方式访问old.com时,将其跳转至https的方式访问oldboy.com。
  • URL伪静态,将动态页面显示为静态页面的一种技术,便于搜索引擎的录入,同时减少动态URL地址对外暴露过多的参数,提升更高的安全性。
  • 搜索引擎SEO优化依赖与URL路径,以便支持搜索引擎录入。
  • 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的要求。

三、rewrite配置语法

Syntax:rewrite regex replacement [flag];

Default:–

Context:server,location,if

四、常用的nginx正则表达式

字符描述
\将后面接着的字符标记为一个特殊字符或者一个原义字符或一个向后引用
^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或者多次
+匹配前面字符串一次或者多次
?匹配前面字符串的零次或者一次
.匹配除“\n”之外的所有单个字符

(pattern)

匹配括号内的pattern

五、nginx 配置文件里 location 项

1、localtion 作用

location 用于匹配用户访问的URL,来适用哪一个目录中的资源

2、location 可以分为三类

  • 精准匹配 : location = / {......}
  • 一般匹配 : location / {......}
  • 正则匹配 : location ~ / {.....}

3、location 的常用匹配规则

字符涵义
=进行普通字符精确匹配,也就是完全匹配
^~表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location
~区分大小写的匹配
~*不区分大小写的匹配
!~区分大小写的匹配取非
!~*不区分大小写的匹配取非

4、location 的 优先级与匹配规则

  1. 首先是 精确匹配 =

    eg: location = /test/ { }

  2. 其次是 前缀匹配 ^~\

    eg: location ^~ /test/ { }

  3. 其次是按文件中顺序的正则匹配 ~ 或 ~*

    eg: location ~ /test/ { }

  4. 然后是一般匹配 ,后面不带 / 的匹配

    eg: locaton /test/ { }

  5. 最后是 交给 / 通用匹配

    eg: location / { }

首先看匹配的优先级 精确匹配 > 前缀匹配 > 正则匹配 > 一般匹配 > 通用匹配

当 没有精确匹配,只有前缀匹配,或者 正则匹配 时,同等级的优先级遵循匹配即停止原则。即当都是正则匹配时,哪个localtion 写在配置文件的上面,就匹配哪个

一般匹配,则遵循最长匹配原则,当只有一般匹配符合时,哪个location 匹配的url 最长,则使用哪个。但是,如果有符合规则的精确匹配,前缀匹配,正则匹配,则使用优先级高的。

5、location 示例说明

1)location = / {}
=为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配。

2)location / {}
因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,但若后面是正则表达式会和最长字符串优先匹配(最长匹配原则)

3)location /test/ {}
匹配任何以 /test/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条

4)location /test/abc {}
匹配任何以 /test/abc 开头的地址,匹配符合以后,还要继续往下搜索其它 location
只有其它 location后面的正则表达式没有匹配到时,才会采用这一条

5)location ^~ /images/ {}
匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条(匹配即停止原则)

6)location ~* .(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求
然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则

7)location /images/abc {}
最长字符匹配到 /images/abc ,如果只有一般匹配,则会使用它,但时由于有 正则匹配和前缀匹配,而一般匹配优先级最低,继续往下搜索其它 location,会发现 ^~ 和 ~ 存在

8)location ~ /images/abc {}
匹配以/images/abc 开头的,优先级次之,只有去掉 location ^~ /images/ 才会采用这一条

9)location /images/abc/1.html {}
匹配/images/abc/1.html 文件,如果和正则 ~ /images/abc/1.html 相比,正则优先级更高

六、案例

1、要求所有ip访问任何内容都显示一个固定的维护页面,只有公司ip:192.168.80.7能正常访问

server {
        listen       80;
        server_name  www.ttsuzuka.com;
        charset utf-8;
        access_log  /var/log/nginx/www.suzuka.com-access.log;

        set $rewrite true;
        if ($remote_addr = "192.168.80.7") {
            set $rewrite false;
}
        if ($rewrite = true) {
            rewrite (.+) /weihu.html;
}
        location = /weihu.html {
            root /var/www/html;
}
        location = / {
            root   html;
            index  index.html index.htm;
}

 

2、 基于旧域名跳转到新域名后面加目录

server {
       listen  80;
       server_name bbs.tt.com;
       charset utf-8;
       access_log /var/log/nginx/www.suzuka.com-access.log;
       
       location /post {
           rewrite (.+) http://www.tt.com/bbs$1 permanent;
}

       location / {
           root   html;
           index  index.html index.htm;
}

3、 基于参数匹配的跳转

        server {
             listen  80;
             server_name bbs.tt.com;
             charset utf-8;
             access_log /var/log/nginx/www.suzuka.com-access.log;
               
             if ($request_uri ~ ^/100-(100|200)-(\d+).html$) 
                Rewrite (.+) http://www.tt.com permanent;
                }

                location / {
                    root   html;
                    index  index.html index.htm;
                }

4 、基于目录下所有php结尾的文件跳转 

server {
            listen  80;
            server_name www.tt.com;
            charset utf-8;
            access_log /var/log/nginx/www.suzuka.com-access.log;

                location ~* /upload/.*\.php$ {
                    rewrite (.+) http://www.tt.com permanent;
                }

                location / {
                    root   html;
                    index  index.html index.htm;
                }

 

 5、基于最普通一条url请求的跳转

server {
           listen  80;
           server_name www.tt.com;
           charset utf-8;
           access_log /var/log/nginx/www.suzuka.com-access.log;

           location ~* ^/abc/123.html {
                    rewrite (.+) http://www.tt.com permanent;
                }

                location / {
                    root   html;
                    index  index.html index.htm;
                }

七、rewrite总结

location 用于匹配 用户访问请求的URL ,来使用哪一个目录中的网页资源,

rewrite ....... permanent 修改url 后再次请求访问

rewrite /weihu.html 按照修改域名后的 url 直接跳转到对应的 location

location ~ .... if ($request_uri) {

rewrite 如果对全URL 重写,则重写部分就以http:// 开头,后面跟上重写后的URL。 http://.....

如果不以http://.... 开始重写, 默认只对于域名后的路径重写,对 ?后传递的参数无效如http://www.benet.com/abc/?..... ,则只 对 " abc" 进行重写

}

nginx的rewrite地址重写功能和案例介绍 nginx的rewrite地址重写功能和案例介绍 web服务器中的必备功能,用来实现地址的重写(不是转发),可以让用户在我们网站变动的时候仍然能够通过原来的书签访问到变动后的内容。last——本条规则匹配完成后, 继续向下匹配新其他uri规则break——本条规则匹配完成即终止, 不再匹配后面的任何规则redirect——返回302临时重定向, 浏览器地址栏会显示跳转后的url地址permanent——返回301永久重定向, 浏览器地址栏会显示跳转后的url地址五.例子1.访问不存在的网页时定向到某个界面。 阅读详情

相关推荐

nginx rewrite 重定向

最近开发 H5,遇到的问题:微信 JSSDK 分享接口如何分享支持网页授权的拼接地址? JSSDK 分享的链接域名必须与当前公众号配置的 JS 安全域名一致,但获取微信用户信息又必须用微信指定的规则拼接访问地址,那就真的没办法实现了吗?(陷入僵局,跳不出这个????了) 后来有网友提供了思路:分享自己服务器上的 URL,在用户点开的时候,进行重定向即可。(另辟蹊径,醍醐灌顶) 查资料: 1、rewrite 是 Nginx 服务器提供的一个重要功能,可以实现 URL 重定向功能。 2、理解地址重写和

hb_zhouyj的博客 2301

Nginx重定向

Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是。注意:Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安装PCRE库。Nginx使用的是ngx_http_rewrite_module模块来解析和处理Rewrite功能的相关配置。

牵着蜗牛_去散步 1万+

Nginx URL Rewrite:灵活的 URL 重写与重定向

它常用于静态资源的处理,例如检查文件是否存在,如果不存在,则重写请求到某个页面(通常是首页或错误页面)。Nginx 支持强大的正则表达式匹配功能,可以用来处理更复杂的 URL 重写需求。Nginx 的 **URL 重写(Rewrite)**功能允许你根据请求的 URL 动态地修改请求路径或进行重定向。当请求的文件或页面不存在时,你可能希望将请求重定向到一个自定义的 404 页面或者首页。:新的 URL,符合规则时,Nginx 会将请求的 URL 重写为这个目标。示例:当请求的文件不存在时,重定向到。

m0_74825074的博客 1232

nginx重定向

继续上面的例子,当用户访问 http://aaa.com/index.html 时,源服务器会告诉来访用户,你要的资源在 http://bbb.com/index.html 服务器上,你去找它要吧,此时来访用户根据源服务器的通知,重新到新服务器去获取资源,这就完成了请求的重定向。举例:假设你有一个域名为 aaa.com 网站, 但后面希望改版到 bbb.com 这个域名上,为了尽可能继承原网站的 SEO ,在新域名上线前期,需要将旧域名的流量全部汇聚到新域名的站点上来,此时就需要用到重定向功能了。.....

xiaowang_test的博客 1万+

Nginx重定向:实现URL的重定向

在Web开发中,URL重定向是一种常见的技术,用于将用户从一个URL地址重定向到另一个URL地址。在本文中,我们将介绍如何使用Nginx来实现URL的重定向,并提供相应的源代码示例。我们涵盖了将URL重定向到新的URL、重定向到HTTPS、重定向特定页面、重定向特定域名以及使用正则表达式进行重定向等常见场景。需要注意的是,在修改Nginx的配置文件之前,建议备份原始文件以防止配置错误导致的问题。在上面的示例中,我们将HTTP的监听端口设置为80,并将请求重定向到HTTPS。

IbcVue的博客 1972

51单片机学习(5)-----蜂鸣器的介绍与使用

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。

2302_80260350的博客 1万+

[原]Nginx重定向Rewrite分析

http://homeway.me 0x01.About之前写过Nginx重定向了,http://homeway.me/2014/10/28/nginx-reverse-proxy-conf/,但当时比较模糊。这里主要说两种常用的重定向,都是php中的重定向。一种是typecho的带 index.php 例如 http://homeway.me/index.php/arg1/arg2,另一种是隐藏

夏日小草 2274

Linear超高PSRR线性稳压器-典型应用电路解析

本文整理完了LT3045数据手册内所有的典型应用电路,试图让沉默的电路开口,简单介绍了他们这样做的目的和原理,从中我们可以更加熟悉这颗经典芯片的应用。但也有一些电路并没有搞懂,遗留下了不少问题。

硬件工程师笔记 2939

nginx的重定向(rewrite)

在重定向的过程中,使用了last方式进行重定向,但是,没有结束语,陷入了死循环,nginx会自动循环10次,超过10次没有结束,就会停止,然后报错500。proxy_set_header X-Real-IP $remote_addr 加上这一字段,客户端的真实ip地址会传递给后端服务器。redirect:临时重定向,返回码302,浏览器的地址会显示跳转后的URL地址。last:重定向,但是会继续向下匹配,匹配其他的location规则。$scheme:请求的协议,要么是http,要么是https。

qq_52448810的博客 1379

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

FR4板材实战:用ADS 2023快速设计微带线低通滤波器(附Line-Cal计算技巧)

本文详细介绍了使用ADS 2023在FR4板材上设计1-3GHz微带线低通滤波器的工程技巧。通过Line-Cal工具快速计算微带线参数,解决FR4板材的介质损耗和阻抗匹配问题,提供从集总参数转换到分布参数的实用方法,并分享版图设计与实测验证的关键要点,帮助工程师高效完成射频滤波器设计。

omega的博客 713

nginx的重定向rewrite

nginx的重定向(rewrite)

qq_64410777的博客 742

Tessent ICL语法详解:如何高效定义SIB、TDR和TAP模块

本文深入解析Tessent ICL语法,指导如何高效定义SIB、TDR和TAP模块以构建芯片测试网络。通过实战代码示例,详细阐述了各模块的端口声明、接口角色与核心寄存器定义,并提供了顶层集成连接方法与调试技巧,帮助DFT工程师精准描述测试仪器拓扑,提升Tessent工具链使用效率。

silver的专栏 492

Nginx地址重定向 return rewrite if

return指令 该指令用于结束规则的执行并返回状态码给客户端。 示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码 location ~ .*.(sh|bash)?$ { return 403; } rewrite 指令 使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向 rewrite 语法格式 rewrite regex(正则...

bjgaocp的博客 3252

3篇1章6节:R基础绘图之图形的保存和导出技巧

高质量图形导出是R语言用户在数据分析和科研工作中的重要技能。通过合理控制图形的分辨率、选择合适的颜色管理方案和文件格式,以及掌握批量保存图形的技巧,可以显著提升图形的展示效果和应用范围。这不仅有助于提高研究成果的展示质量,还能在各种专业场合中展现数据分析的精确性和美观性。

MD Code 1479

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 494

php,nginx配置重定向,rewrite

需求,将http://localhost:80/index/abc rewrite为http://localhost:80/aaa.php/abc 访问网站时只输入http://localhost:80/index/abc 经过nginx rewrite后, 重定访问路径为:http://localhost:80/abc.php/abc rewrite指令的功能就是,使用nginx提供的全局变量或自己设置的变量,然后结合正则表达式和标志位实现url重写以及重定向。rewrite指令只能放...

codeFly 5061

网工运维掌握OpenClaw这7大必备技能,自动化运维效率直接起飞

OpenClaw的核心就是它的技能系统。通过官方技能市场(clawhub.ai),你只需一条命令就能安装扩展,让AI代理变成你的“运维副手”。今天我就结合网工运维的真实痛点,精选7项最热门、最实用的OpenClaw技能(基于ClawHub下载量和实际测试),手把手教你安装、使用和进阶玩法。这些技能不是玩具,而是能直接提升运维效率10倍以上的生产力工具!安装后,你的OpenClaw代理就能自动处理Zabbix告警、总结syslog日志、更新Obsidian网络拓扑笔记、甚至通过n8n触发自动修复脚本。

网络技术联盟站 573

常用nginx rewrite重定向-跳转实例

常用nginx rewrite重定向-跳转实例: 1,将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com permanent; rewrite ^/connect/(.*)$ http://connect.myweb.com/$1 permanent; 2,将con...

weixin_42747452的博客 6136

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Nginx的rewrite(地址重定向)剖析

Nginx的rewrite(地址重定向)剖析 一、rewrite语法 指令语法:rewrite regex replacement[flag] 默认值:none 应用位置:server、location、if regex是PCRE 风格的,如果regex匹配URI,那么URI就会被替换成replacement,replacement 就是新的URI。如果rewrite同一个上下文中有多个这样的正则,匹配会依照rewrite指令出现的顺序先后依次进行下去,匹配到一个之后并不会终止,而是继续往下匹配,直到返回最

阁下何不踏风起 3376

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Nginx之Rewrite重定向

官网地址 https://nginx.org/en/docs/http/ngx_http_core_module.html#location。例如 http://www.kgc.com/a/we/index.php?再比如 location = /abc,则只匹配/abc ,/abc/匹配,/abcd不匹配。

cyb0428的博客 2036

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

nginx 重定向 rewrite 规则

1.rewrite配置 server { listen 80 default_server; server_name jeson.t.imooc.io; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code; locat...

anbingzhong1132的博客 172
上一篇: LNMP架构
下一篇: Tomcat服务部署及优化
梅比乌斯N
博客等级 码龄4年 287粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值