rewrite中的if、break、last
创始人
2024-05-26 07:46:23
0

目录

rewrite 作用:

依赖:

打开重定向日志:

if 判断:

location {} 本身有反复匹配执行特征

在 location  中加入 break 和 last (不一样)

加了break后,立刻停止向下 且 跳出。

加了last,会停止当前向下后,会重头再来一遍。

在 server 中加入 break 和 last (一样)


rewrite 作用:

域名跳转(重定向) URL重写(伪静态)(一长串参数很复杂的链接 跳转 到简介的链接上) 动静分离(跳转域名然后接入CDN实现加速,这种情况较多,对于大流量的网站相对鸡肋,但对于小网站很实用)

依赖:

PCRE库 ,因为要用到正则表达式 ngx_http_rewrite_module  需要编译入的模块

配置 rewrite重定向日志:

1) rewrite_log on; 2)错误日志中 必须开启 notice 记录等级,然后rewrite会被写入到error.log中 

if 判断

依靠nginx内置非自定义变量, 如 $request_method、 request_uri 逻辑判断符号    ~ 匹配(正则表达式)    ~*  不区分大小写匹配(正则表达式) 匹配的字符串可以是正则表达式,通常不用加引号,仅在表达式中有特殊符号( 空格、花括号、分号等时)用单引号括起来。
  • 限制 请求方式 为post
  • 限制 请求的浏览器 为 MSIE或firefox或spider  
当不确定浏览器名时候可以用 ~* 来忽略大小写。
  • 限制 当请求的文件 不存在时候
  • 限制 URL中gid包含9-12个数字
\d 代表数字  {9,12} 代表范围 ,即当 gid 等于 9至12个数字开头,/ 结尾,的时候就是符合的。

location {} 本身有反复匹配执行特征

如下,当是www.lwjweb.com/1.html 时候,会先匹配 location / 里的变为 www.lwjweb.com/3.html   ——  出来匹配到 /3.html 变为 www.lwjweb.com/a.html  。 这时候又会从头匹配到 location / ,只是进去以后没有对应的rewrite ,这时匹配才结束。 server {     location / {         rewrite /1.html /2.html ;         rewrite /2.html /3.html ;     }     location /3.html {         rewrite a.html     } } 例: rewrite 一个1.html转2.html ,2.html转3.html的例子 多个rewrite会根据上一步结果依次执行 错误日志中可见,1.html 匹配到了/1.html 转换为了2.html,2.html 匹配到了/2.html 转换为了3.html,3.html 最后还再次匹配进了 /  ,进行了 /1.html 和 /2.html 的对比,但是没有匹配成功。 break、last  可用来防止反复rewrite

在 location  中加入 break 和 last (不一样)

  • 加了break后,立刻停止向下 且 跳出。

不但这个location不会执行,外面的其他location也不会执行,就此停止。
  • 加了last,会停止当前向下后,会头再来一遍。

server {     location / {         rewrite /1.html /2.html  last;         rewrite /2.html /3.html ;     }     location /2.html {         rewrite a.html     } } #结果是/a.html 当是www.lwjweb.com/1.html 时候,会先匹配 location /  里的 /1.html 的变为 www.lwjweb.com/2.html   ,被 last 打断,重头再来,再同时匹配到 / 和 /2.html ,但因为/2.html  更为准确因此会走 /2.html ,变为 www.lwjweb.com/a.html  。 这时候又会从头匹配到 location / ,只是进去以后没有对应的rewrite ,这时匹配才结束。 在 server 中加入 break 和 last (一样) 不在location中的话,2个都不会重复运行。    

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...