运维之道 | Nginx rewrite 规则详解

网站优化之nginx rewrite Nginx Rewrite模块主要实现URL地址重写和跳转。‌NginxRewrite功能允许服务器根据特定的规则对客户端请求的URL进行重写或跳转,‌以实现更灵活的URL管理和优化。‌这一功能在多个场景中都非常有用,‌本章详细介绍nginx rewrite配置。 阅读详情

Nginx rewrite 规则详解

一、rewrite规则概念

rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言。通常而言,几乎所有的 Web 服务器均可以支持 URL 重写。
rewrite URL 规则重写的用途如下:

  • 对搜索引擎优化 ( search engine optimization, SEO)友好,利于搜索引擎抓取网站页面;
  • 隐藏网站 URL 真实地址,浏览器显示更加美观;
  • 网站变更升级,可以基于 rewrite 临时重定向到其他页面。

Nginx rewrite 规则使用中有 3 个概念,分别是rewrite 结尾标识符rewrite 规则常用表达式Nginx rewrite 变量
3 个概念的详解如下:

1、Nginx rewrite 结尾标识符,用于 rewrite 规则末尾,表示规则的执行属性,详解如下:
  • last:相当于 Apache 里的( L)标记,表示完成 rewrite 匹配。
  • break :本条规则匹配完成后,终止匹配,不再匹配后面的规则。
  • redirect:返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址。
  • permanent:返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址。

注:其中 last 和 break 用来实现 URL 重写时,浏览器地址栏 URL 地址不变。


2、Nginx rewrite 规则常用表达式,主要用于匹配参数、字符串及过滤设置,详解如下:
  • .:匹配任何单字符。
  • [word]:匹配字符串 word。
  • [^word] :不匹配字符串 word。
  • jfedu | jfteach :可选择的字符串 jfedu l jfteacho
  • ? :匹配 0~1 个字符。
  • * :匹配 0 到多个字符。
  • :匹配 1 到多个字符。
  • ^ :字符串开始标志 。
  • $:字符串结束标志。
  • \n:转义符标志 。

3、Nginx rewrite 变量,常用于匹配 HTTP 请求头信息、浏览器主机名、URL 等,具体 内容如下:
HTTP headers: HTTP USER AGENT, HTTP REFERER, HTTP COOKIE, HTTP _HOST, HTTP _ACCEPT。 
connection &. request: REMOTE_ADDR, QUERY _STRING。 
server internals: DOCUMENT ROOT,SERVER PORT,SERVER PROTOCOL。 
system stuff: TIME_ YEAR, TIME_MON, TIME_DA Y

详解如下:

  • HTTP_USER_AGENT :用户使用的代理,例如浏览器 。
  • HTTP_REFERER:告知服务器,从哪个页面来访问的 。
  • HTTP_COOKIE :客户端缓存,主要用于存储用户名和密码等信息 。
  • HTTP_HOST :匹配服务器 servername 域名 。
  • HTTP_ACCEPT:客户端的浏览器支持的 MIME 类型。
  • REMOTE_ADDR :客户端的 IP 地址 。
  • QUERY_STRING: URL 中访问的字符串 。
  • DOCUMENT_ROOT:服务器发布目录。
  • SERVER_PORT :服务器端口。
  • SERVER_PROTOCOL:服务器端协议。
  • TIME_YEAR:年。
  • TIME_MON :月。
  • TIME_DAY :日 。

二、企业中常用的 Nginx rewrite 案例

  • 将 zwl.com 跳转至 www.zwl.com,代码如下:
if ( $host = 'zwl.com' ) {
        rewrite ^/(.*)$http://www.zwl.com/$1 permanent;
}

在这里插入图片描述

  • 访问 www.zwl.com跳转 www.test.com/index.html ,代码如下:
rewrite ^/$http://www.test.com/index.html permanent; 
  • 访问/zwl/test/跳转至/newindex.html,浏览器地址不变,代码如下:
rewrite ^/zwl/test/$  /newindex.html last;
  • 多域名跳转到 www.zwl.com,代码如下 :
if ( $host != 'www.zwl.com') { 
	rewrite ^/(.*)$http://www.zwl.com/$1 permanent; 
}
  • 访问文件和目录不存在跳转至 index.php ,代码如下 :
if(! -e $request_filenarne) {
rewrite ^/(.*)$/index.php last; 
}
  • 目录对换/xxxx/123456 ----/xxxx? id=123456 ,代码如下:
rewrite ^/(.+)/(\d+)	/$1?id=$2		last;
  • 判断浏览器 user agent 跳转,代码如下:
if( $http_user_agent ~ MSIE) {
	rewrite ^(.*)$/ie/$1 break;
}
  • 禁止访问以.sh、.flv、.mp3 为文件后缀名的文件,代码如下:
location ~.*\.(sh|flv|mp3)$ {
	return 403; 
}
  • 将移动用户访问跳转至移动端,代码如下:
if ( $http_user_agent ~*"(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)") {
	rewrite ^/$ http://www.zwl.com/ permanent;
} 
  • 匹配 URL 访问字符串跳转,代码如下:
if ( $args ~*tid = 13){ 
	return 404;
} 


摘取至:《曝光:Linux企业运维实战》书籍

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取 本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确 阅读详情

相关推荐

遥感目标检测数据集汇总

文章目录1. 光学数据集1.1 DIOR1.2 LEVIR1.3 DOTA1.4 RSOD1.5 NWPU VHR-101.6 VEDAI1.7 COWC1.8 ITCVD1.9 DIUx xView 20181.10 HRSC20161.11 TAS1.12 SZTAKI‐INRIA1.13 UCAS AOD1.14 DLR 3K Vehicle2. SAR2.1 SSDD2.2 SSDD+2....

quanwei的博客 6万+

nginxRewrite规则详解

set指令 该指令用来设置一个新的变量。 语法 set $variable value; 默认值 — 位置 server,location,if variable:变量的名称,该变量名称要用"$"作为变量的第一个字符,且不能与Nginx服务器预设的全局变量同名。 value:变量的值,可以是字符串、其他变量或者变量的组合等。 Rewrite常用全局变量 变量 说明 $args 变量中存放了请求URL中的请求指令。比如http://192.168.200.133:808

认知 行动 坚持 6753

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3791

nginx Rewrite 规则

一:nginx Rewrite 规则 1:rewrite的概念: Nginx Rewrite功能是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向功能。Rewrite指令只能放在server {},location {},if {}中,并且只能对域名后边的除去传递的参数外的字符串起作用。 NginxRewrite规则采用PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式)的语法进行...

小小关的博客 2227

nginx url重写-rewrite实例

发布:thebaby   来源:net     【大 中 小】 本文介绍下,在nginx中实现Url重写,学习rewrite的具体用法,有需要的朋友参考下吧。 nginxrewrite 语法 语法: rewrite regex replacement flag默认: none作用域: server, location, if此指令根据表达式来更改URI,或修改字符串。指令根据配置文...

南方侯鸟 880

nginx做301重定向if判断报错unknown directive "if($host!="

if ( $host = '56zx.com' ){ rewrite ^/(.*)$ http://www.56zx.com/$1 permanent; } 将不带www的域名重定向到带www的域名,规则如下: if($host='56zx.com'){ rewrite ^/(.*)$ http://www.56zx.com/$1 permanent; } 原因是nginx

阿不的专栏 1万+

nginx 设置重定向 unknown directive "if($host" in

内容转载:http://www.apeblog.cn/article/50.html 给nginx设置重定向的时候出现报错 Bash nginx -s reload nginx: [emerg] unknown directive "if($host" in /etc/nginx/conf.d/phpmyadmin.conf:9 nginx.co

u010889861的博客 1万+

Nginx Rewrite

Nginx Rewrite前言一、nginx rewrite概述(1)(2)跳转场景(3)跳转实现(4)rewrite实际场景①nginx跳转需要的实现方式②rewrite放在server{}, if{},location{}段中③对域名或参数字符串二、常见的Nginx正则表达式(1)常见的正则表达式的元字符(2)正则表达的优势③Nginx使用正则的作用三、rewrite(1)rewrite语法(2)rewrite执行顺序四、location分类和优先级(1)location匹配规则格式(2)locatio

qq1356059950的博客 2万+

NginxRewrite 使用详解

Nginxrewrite模块是处理 HTTP 请求过程中的一个重要功能,它允许基于 Perl 兼容正则表达式(PCRE)对用户请求的 URI 进行重写,并返回 30x 重定向跳转或按条件执行相关配置。这个模块提供了灵活的 URL 重写和重定向功能,可以用于实现友好 URL、301/302 重定向、条件重写等。

2509_93882308的博客 1675

Nginx用法】nginx location正则表达式写法,详解Nginx location 匹配规则(很详细哦)

表明看rewrite和location功能有点像,都能实现跳转,主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对一类路径做控制访问或反向代理,可以proxy_pass到其他机器。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如。文件存不存在,如果存在则正常响应,如果不存在则重写tryfiles到新的image404 location,直接返回404状态码。之间匹配的内容,可以在后面通过。...

No8g攻城狮的博客 3万+

39Nginxrewrite规则执行逻辑详解

rewrite本质是,通过预设条件匹配请求 URL,将其修改为新的 URL 后再处理(如转发到后端服务、返回新页面、永久重定向等)Nginxrewritelocationrewritelocation(除非使用last或break标记强制中断)

zbdjdmm的博客 988

Nginx系列】Nginxrewrite模块

Nginxrewrite 模块是,它主要用于改写请求 URI,是 Nginx 默认安装的模块之一。通过使用 rewrite,可以实现 URL 重写和重定向,这在网站开发和维护中有着广泛的应用。

CSDN站内信: https://i.csdn.net/#/msg/chat/qyj19920704 2万+
上一篇: 运维之道 | Nginx限制对代理HTTP资源的访问
下一篇: 运维之道 | Nginx服务器配置防盗链
VillianTsang
博客等级 码龄7年 62粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值